.Net平台上对Excel进行操作主要有两种方式。第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作;第二种,调用Excel的COM组件。两种方式各有特点。
注意一些简单的问题1.excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。2.关于乱码,这主要是字符设置问题。
一、OleDb方式
- 读取Excel文件

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 }

访问.xls的文件使用的是“Microsoft.Jet.OLEDB.4.0”,访问.xlsx的文件使用的是“Microsoft.Ace.OleDb.12.0”
- 写入excel文件

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 }

二、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文件

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关注打赏
热门博文
- Python:ULID通用唯一词典排序标识符
- Module not found: Error: Can‘t resolve ‘path‘
- 利用workflows工作流Actions自动部署Vue项目Deploy to GitHub Pages
- Vue2.js:前端在浏览器中网页表格打印的实现方案:window.print、print-js、iframe
- MacOS:使用内置的屏幕截图和屏幕录像功能
- css: Tailwind CSS一个功能类优先的 CSS 框架
- css:border-radius绘制边框圆角-全圆和椭圆
- PHP/Python/js:时间转为人类可读的字符串格式:刚刚、几分钟前、几小时前、几天前
- Golang:imaging一个简单、实用的图像处理工具
- element-plus:Dialog 对话框在有滚动条的页面会抖动
立即登录/注册


微信扫码登录