C#操作excel(多种方法比较) 下载本文

内容发布更新时间 : 2024/5/1 15:29:38星期一 下面是文章的全部内容请认真阅读。

C#操作excel(多种方法比较)

我们在做excel资料的时候,通常有以下方法。 一.导入导出excel常用方法:

1.用查询表的方式查询并show在数据集控件上。

代码

public static string strCon = \EDB.4.0 ; Data Source =C:\\\\08.xls;Extended Properties=Excel 8.0\;

public static DataSet ds;

protected void Page_Load(object sender, EventArgs e) {

OleDbConnection conn = new OleDbConnection(strCon); string sql = \; conn.Open();

OleDbDataAdapter myCommand = new OleDbDataAdapter(sql, strCon);

ds = new DataSet();

myCommand.Fill(ds, \); conn.Close();

datagrid1.DataMember = \; datagrid1.DataSource = ds; datagrid1.DataBind();

//Excel.Application excel = new Excel.Application(); //excel.Application.Workbooks.Add(true); //excel.Visible = true; }

2.一个一个单元格的进行插入

代码

1 string str = @\RESS;Initial Catalog=TestBase;Integrated Security=True\; 2 SqlConnection conn = new SqlConnection(str); 3 conn.Open(); 4 int n = 0;

5 for (int i = 1; i < 20; i++) 6 {

7 if (n > 3) 8 break;

9 else

10 if (msheet.Cells.get_Range(\ + i, Type.Missing).Text.ToString() == \ && n <= 3) 11 { n++; } 12 else 13 {

14 //循环获取excel单元格的值一次一次的插入,excuteSql为执行的存储过程

15 excuteSql(msheet.Cells.get_Range(\ + i, Type.Missing).Text.ToString(),

16 msheet.Cells.get_Range(\ + (i + 1), Type.Missing).Text.ToString(),

17 msheet.Cells.get_Range(\ + (i + 2), Type.Missing).Text.ToString(), 18 conn); 19 i = i + 3; 20

21 } 22 } 23

24 conn.Close();

二快速导入导出

1.我们都知道当向db里批量插入数据的时候我们会选择SqlBulkCopy if (dataTable!=null && dataTable.Rows.Count!=0) {

sqlBulkCopy.WriteToServer(dataTable); }

这个可以看 深山老林新发的一篇SQLServer中批量插入数据方式的性能对比下面是

SqlBulkCopy的方法,这个方法有一个弊端就是当excel某一列即有文字,还有日期的时候,会出现null值,我在网上查了一些资料说连接字串加上;HDR=YES;IMEX=1'的时候会都当做字符处理,但是还是会出现一些bug,所以建议最好先把excel数据分析到datatable里然后再用SqlBulkCopy倒入数据库

代码

2.快速导出db的数据到excel 这种方法就是利用 Excel.QueryTables Excel.QueryTable

Querytable把数据快速导入excel里。我们在做复杂报表的时候,这个用的是比较多了,但是单单会这个没有用,它只是快速的把db里的数据放放到excel里,

在做大量数据而且需要设定excel样式的时候我们会选择先用这种方法把数据导入excel一个临时sheet,再利sheet复制,sheet移动,和一些excel样式设定,以及

excel一个强大的自动填充的功能,那么这些就可以让我们快速的做出花样多试的excel报表,当然这个要求我们比较熟练office的操作,包括宏的操作。

代码

com操作excel的一些特性操作:

range.NumberFormatLocal = \; //设置单元格格式为文本 range = (Range)worksheet.get_Range(\, \); //获取Excel多个单元格区域:本例做为Excel表头 range.Merge(0); //单元格合并动作

worksheet.Cells[1, 1] = \单元格赋值\; //Excel单元格赋值

range.Font.Size = 15; //设置字体大小

range.Font.Underline=true; //设置字体是否有下划线 range.Font.Name=\黑体\; 设置字体的种类

range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //设置字体在单元格内的对其方式

range.ColumnWidth=15; //设置单元格的宽度

range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb(); //设置单元格的背景色 range.Borders.LineStyle=1; //设置单元格边框的粗细 range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb()); //给单元格加边框 range.EntireColumn.AutoFit(); //自动调整列宽

Range.HorizontalAlignment= xlCenter; // 文本水平居中方式 Range.VerticalAlignment= xlCenter //文本垂直居中方式