首页 > 学院 > 开发设计 > 正文

c#读取excel

2019-11-17 02:20:06
字体:
来源:转载
供稿:网友

c#读取Excel

PRovider根据实际EXCEL的版本来设置,推荐使用ACE接口来读取。需要access database Engine。

注意修改注册表以下两项的值为0。否则导入EXCEL当单元格内字符长度超过255会发生截断现象!!!

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/12.0/AccessConnectivity Engine/Engines/Excel/TypeGuessRows

64位系统下

HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Office/12.0/Access Connectivity Engine/Engines/Excel/ TypeGuessRows

看到论坛里面不断有人提问关于读取excel和导入excel的相关问题。闲暇时间将我所知道的对excel的操作加以总结,现在共享大家,希望给大家能够给大家带了一定的帮助。另外我们还要注意一些简单的问题1.excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。2.关于乱码,这主要是字符设置问题。

1.加载Excel(读取excel内容)返回值是一个DataSet

[csharp]view plaincopy
  1. //加载Excel
  2. publicstaticDataSetLoadDataFromExcel(stringfilePath)
  3. {
  4. try
  5. {
  6. stringstrConn;
  7. strConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+filePath+";ExtendedProperties='Excel8.0;HDR=False;IMEX=1'";
  8. OleDbConnectionOleConn=newOleDbConnection(strConn);
  9. OleConn.Open();
  10. Stringsql="SELECT*FROM[Sheet1$]";//可是更改Sheet名称,比如sheet2,等等
  11. OleDbDataAdapterOleDaExcel=newOleDbDataAdapter(sql,OleConn);
  12. DataSetOleDsExcle=newDataSet();
  13. OleDaExcel.Fill(OleDsExcle,"Sheet1");
  14. OleConn.Close();
  15. returnOleDsExcle;
  16. }
  17. catch(Exceptionerr)
  18. {
  19. MessageBox.Show("数据绑定Excel失败!失败原因:"+err.Message,"提示信息",
  20. MessageBoxButtons.OK,MessageBoxIcon.Information);
  21. returnnull;
  22. }
  23. }

2.写入Excel内容,参数:excelTable是要导入excel的一个table表

[csharp]view plaincopy
  1. publicstaticboolSaveDataTableToExcel(System.Data.DataTableexcelTable,stringfilePath)
  2. {
  3. Microsoft.Office.Interop.Excel.applicationapp=
  4. newMicrosoft.Office.Interop.Excel.ApplicationClass();
  5. try
  6. {
  7. app.Visible=false;
  8. WorkbookwBook=app.Workbooks.Add(true);
  9. WorksheetwSheet=wBook.Worksheets[1]asWorksheet;
  10. if(excelTable.Rows.Count>0)
  11. {
  12. introw=0;
  13. row=excelTable.Rows.Count;
  14. intcol=excelTable.Columns.Count;
  15. for(inti=0;i<row;i++)
  16. {
  17. for(intj=0;j<col;j++)
  18. {
  19. stringstr=excelTable.Rows[i][j].ToString();
  20. wSheet.Cells[i+2,j+1]=str;
  21. }
  22. }
  23. }
  24. intsize=excelTable.Columns.Count;
  25. for(inti=0;i<size;i++)
  26. {
  27. wSheet.Cells[1,1+i]=excelTable.Columns[i].ColumnName;
  28. }
  29. //设置禁止弹出保存和覆盖的询问提示框
  30. app.DisplayAlerts=false;
  31. app.AlertBeforeOverwriting=false;
  32. //保存工作簿
  33. wBook.Save();
  34. //保存excel文件
  35. app.Save(filePath);
  36. app.SaveWorkspace(filePath);
  37. app.Quit();
  38. app=null;
  39. returntrue;
  40. }
  41. catch(Exceptionerr)
  42. {
  43. MessageBox.Show("导出Excel出错!错误原因:"+err.Message,"提示信息",
  44. MessageBoxButtons.OK,MessageBoxIcon.Information);
  45. returnfalse;
  46. }
  47. finally
  48. {
  49. }
  50. }

转载的朋友请一定注明出处谢谢!http://blog.csdn.net/gisfarmer/


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表