C#操作Excel文件三种方式

C#操作Excel文件三种方式
彭世瑜2021-07-12 16:14:28
文章标签C/C++文章分类C/C++后端开发阅读数5317

.Net平台上对Excel进行操作主要有两种方式。第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作;第二种,调用Excel的COM组件。两种方式各有特点。

注意一些简单的问题1.excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。2.关于乱码,这主要是字符设置问题。

一、OleDb方式

读取Excel文件
C#操作Excel文件三种方式_C/C++
1 //加载Excel
2 public static DataSet LoadDataFromExcel(string filePath)
3 {
4 try
5 {
6 string strConn;
7 strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + filePath + “;Extended Properties=‘Excel 8.0;HDR=False;IMEX=1’”;
8 OleDbConnection OleConn = new OleDbConnection(strConn);
9 OleConn.Open();
10 String sql = “SELECT * FROM [Sheet1$]”;//可是更改Sheet名称,比如sheet2,等等
11
12 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
13 DataSet OleDsExcle = new DataSet();
14 OleDaExcel.Fill(OleDsExcle, “Sheet1”);
15 OleConn.Close();
16 return OleDsExcle;
17 }
18 catch (Exception err)
19 {
20 MessageBox.Show(“数据绑定Excel失败!失败原因:” + err.Message, “提示信息”,
21 MessageBoxButtons.OK, MessageBoxIcon.Information);
22 return null;
23 }
24 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
C#操作Excel文件三种方式_C/C++
访问.xls的文件使用的是“Microsoft.Jet.OLEDB.4.0”,访问.xlsx的文件使用的是“Microsoft.Ace.OleDb.12.0”

写入excel文件
C#操作Excel文件三种方式_C/C++
1 ///
2 /// 写入Excel文档
3 ///
4 public bool SaveFP2toExcel(string filePathath)
5 {
6 try
7 {
8 string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”+ filePathath +“;Extended Properties=Excel 8.0;”;
9 OleDbConnection conn = new OleDbConnection(strConn);
10 conn.Open();
11 System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
12 cmd.Connection =conn;
13
14 for(int i=0;i0].RowCount -1;i++)
15 {
16 if(fp2.Sheets [0].Cells[i,0].Text!=“”)
17 {
18 cmd.CommandText =“INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('”+fp2.Sheets [0].Cells[i,0].Text+ “‘,’”+
19 fp2.Sheets [0].Cells[i,1].Text+“‘,’”+fp2.Sheets [0].Cells[i,2].Text+“‘,’”+fp2.Sheets [0].Cells[i,3].Text+
20 “‘,’”+fp2.Sheets [0].Cells[i,4].Text+“‘,’”+fp2.Sheets [0].Cells[i,5].Text+“')”;
21 cmd.ExecuteNonQuery ();
22 }
23 }
24
25 conn.Close ();
26 return true;
27 }
28 catch(System.Data.OleDb.OleDbException ex)
29 {
30 Console.WriteLine (“写入Excel发生错误:”+ex.Message );
31 return false;
32 }
33 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
C#操作Excel文件三种方式_C/C++

二、Excel COM组件

一个.NET组件事实上是一个.NET下的DLL,它包含的不仅是运行程序本身,更重要的是包含这个DLL的描述信息(Meta Data,即元数据),而一个COM组件是用其类库(TLB)储存其描述信息。这些COM组件都是非受管代码,要在Visual C#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的.NET组件。所以在用Visual C#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。

添加COM组件

Create an Automation Client for Microsoft Excel
Start Microsoft Visual Studio .NET.
On the File menu, click New, and then click Project. Select Windows Application from the Visual C# Project types. Form1 is created by default.
Add a reference to the Microsoft Excel Object Library. To do this, follow these steps:
On the Project menu, click Add Reference.
On the COM tab, locate Microsoft Excel Object Library, and click Select.
Click OK in the Add References dialog box to accept your selections. If you are prompted to generate wrappers for the libraries that you selected, click Yes.
using Excel = Microsoft.Office.Interop.Excel;
读取Excel文件
C#操作Excel文件三种方式_C/C++
1 private void button1_Click(object sender, EventArgs e)
2 {
3 Excel.Application xlApp ;
4 Excel.Workbook xlWorkBook ;
5 Excel.Worksheet xlWorkSheet ;
6 Excel.Range range ;
7
8 string str;
9 int rCnt = 0;
10 int cCnt = 0;
11
12 xlApp = new Excel.Application();
13 xlWorkBook = xlApp.Workbooks.Open(“csharp.net-informations.xls”);
14 xlWorkSheet = xlWorkBook.Sheets[“Sheet1”];
15
16 range = xlWorkSheet.UsedRange;
17
18 for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
19 {
20 for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
21 {
22 str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2 ;
23 MessageBox.Show(str);
24 }
25 }
26
27 xlWorkBook.Close(true, null, null);
28 xlApp.Quit();
29 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
C#操作Excel文件三种方式_C/C++
写入Excel文件
C#操作Excel文件三种方式_C/C++
1 private void button1_Click(object sender, EventArgs e)
2 {
3 Excel.Application xlApp ;
4 Excel.Workbook xlWorkBook ;
5 Excel.Worksheet xlWorkSheet ;
6 object misValue = System.Reflection.Missing.Value;
7
8 xlApp = new Excel.Application();
9 xlWorkBook = xlApp.Workbooks.Add(misValue);
10 xlWorkSheet = xlWorkBook.Sheets[“Sheet1”];
11
12 //add some text
13 xlWorkSheet.Cells[1, 1] = “http://csharp.net-informations.com”;
14 xlWorkSheet.Cells[2, 1] = “Adding picture in Excel File”;
15
16 xlWorkBook.SaveAs(“csharp.net-informations.xls”, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
17 xlWorkBook.Close(true, misValue, misValue);
18 xlApp.Quit();
19
20 MessageBox.Show (“File created !”);
21 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
C#操作Excel文件三种方式_C/C++

主要参考:http://csharp.net-informations.com/excel/files/download/csharp-open-excel_download.htm

三、第三方插件-NPOI

摘要: NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。在本文发布时,NPOI的最新版本是2.2.1。

NPOI网址   http://npoi.codeplex.com/


  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DK业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值