c# vi Excel相关.doc_第1页
c# vi Excel相关.doc_第2页
c# vi Excel相关.doc_第3页
c# vi Excel相关.doc_第4页
c# vi Excel相关.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1找不到Microsoft.Office21.1方法121.2方法222 无法嵌入互操作类型 Microsoft.Offic.Interop.Excel.WorkbookClass23连接Excel读取数据方法23.1通过OleDb连接,把excel文件作为数据源来读取23.2直接读取(这种直接读取单元格的方法释放很重要)34连接Excel写入数据方法64.1myxls64.2写入Excel内容,参数:excelTable是要导入excel的一个table表61找不到Microsoft.Office1.1 方法1 在控制面板中,选择“添加删除程序”,找到office ,选择“更改”,在对话框中选择“添加删除功能”,然后选择自定义安装,添加上office工具 中的.net可编程性支持,安全起见,把excel下的,word下的此选项都添加上,然后点击“更新”按钮,更新office,完成后再回到.net开 发平台,OK!没有问题了!1.2 方法2.在项目引用中右击选择添加引用,选择COM里面选择Microft Office 12.0 object Library和Microft Excel 12.0 object Library分别点确定即可!同样如果要引用World选Microft World 12.0 object Library! 2003/2007共通处理方式 分别为11或12版本 添加.net中Microsoft.Office.Interop.excel; 添加.net中Office2 无法嵌入互操作类型 Microsoft.Offic.Interop.Excel.WorkbookClass解决办法是将引用的DLL:Microsoft.Office.Interop.Excel;的嵌入互操作类型改为false,就可以了。3 连接Excel读取数据方法3.1通过OleDb连接,把excel文件作为数据源来读取(这里是fill进dataset,也可以返回OleDbDataReader来逐行读,数据较快)注:这种方法容易把混合型的字段作为null值读取进来,解决办法是改造连接字符串1. strConn=Provider=Microsoft.Jet. 2. OLEDB.4.0;DataSource=C:Erp1912.xls;Extended 3. Properties=Excel8.0;HDR=Yes;IMEX=1; 通过Imex=1来把混合型作为文本型读取,避免null值,来实现C#读取Excel文件1. privateDataSetimportExcelToDataSet 2. (stringFilePath) 3. 4. stringstrConn; 5. strConn=Provider=Microsoft.Jet. 6. OLEDB.4.0;+DataSource=+FilePath+; 7. ExtendedProperties=Excel8.0; 8. OleDbConnectionconn=newOleDbConnection 9. (strConn); 10. OleDbDataAdaptermyCommand=newOleDbDataAdapter 11. (SELECT*FROMSheet1$,strConn); 12. DataSetmyDataSet=newDataSet(); 13. try 14. 15. myCommand.Fill(myDataSet); 16. 17. catch(Exceptionex) 18. 19. thrownewInvalidFormatException 20. (该Excel文件的工作表的名字不正确,+ex.Message); 21. 22. returnmyDataSet; 23. 3.2直接读取(这种直接读取单元格的方法释放很重要)1. Excel.Applicationexcel=null; 2. Excel.Workbookswbs=null; 3. Excel.Workbookwb=null; 4. Excel.Worksheetws=null; 5. Excel.Rangerange1=null; 6. objectNothing=System.Reflection.Missing.Value; 7. 8. try 9. 10. excel=newExcel.Application(); 11. excel.UserControl=true; 12. excel.DisplayAlerts=false; 13. 14. excel.Application.Workbooks.Open(this. 15. FilePath,Nothing,Nothing,Nothing,Nothing, 16. Nothing,Nothing,Nothing,Nothing,Nothing, 17. Nothing,Nothing,Nothing); 18. 19. wbs=excel.Workbooks; 20. wb=wbs1; 21. ws=(Excel.Worksheet)wb.WorksheetsSheet2; 22. 23. 24. introwCount=ws.UsedRange.Rows.Count; 25. intcolCount=ws.UsedRange.Columns.Count; 26. if(rowCount=0) 27. thrownewInvalidFormatException 28. (文件中没有数据记录); 29. if(colCount4) 30. thrownewInvalidFormatException 31. (字段个数不对); 32. 33. for(inti=0;i 34. this.rowNo=i+1; 35. objectrow=newobject4; 36. for(intj=0;j0) 50. continue; 51. 52. DataRowdataRow=this.readExcel(row); 53. 54. if(this.isNullRecord=1) 55. continue; 56. 57. if(this.verifyData(dataRow)=false) 58. errFlag+; 59. 60. this.updateTableCurr(dataRow); 61. 62. 63. finally 64. 65. if(excel!=null) 66. 67. if(wbs!=null) 68. 69. if(wb!=null) 70. 71. if(ws!=null) 72. 73. if(range1!=null) 74. 75. System.Runtime.InteropServices.Marshal. 76. ReleaseComObject(range1); 77. range1=null; 78. 79. System.Runtime.InteropServices.Marshal. 80. ReleaseComObject(ws); 81. ws=null; 82. 83. wb.Close(false,Nothing,Nothing); 84. System.Runtime.InteropServices.Marshal. 85. ReleaseComObject(wb); 86. wb=null; 87. 88. wbs.Close(); 89. System.Runtime.InteropServices.Marshal. 90. ReleaseComObject(wbs); 91. wbs=null; 92. 93. excel.Application.Workbooks.Close(); 94. excel.Quit(); 95. System.Runtime.InteropServices.Marshal. 96. ReleaseComObject(excel); 97. excel=null; 98. GC.Collect(); 99. 100. 4 连接Excel写入数据方法4.1 myxls4.2 写入Excel内容,参数:excelTable是要导入excel的一个table表5 publicstaticboolSaveDataTableToExcel(System.Data.DataTableexcelTable,stringfilePath)6 7 Microsoft.Office.Interop.Excel.Applicationapp=8 newMicrosoft.Office.Interop.Excel.ApplicationClass();9 try10 11 app.Visible=false;12 WorkbookwBook=app.Workbooks.Add(true);13 WorksheetwSheet=wBook.Worksheets1asWorksheet;14 if(excelTable.Rows.Count0)15 16 introw=0;17 row=excelTable.Rows.Count;18 intcol=excelTable.Columns.Count;19 for(inti=0;irow;i+)20 21 for(intj=0;jcol;j+)22 23 stringstr=excelTable.Rowsij.ToString();24 wSheet.Cellsi+2,j+1=str;25 26 27 28 29 intsize=excelTable.Columns.Count;30 for(inti=0;isize;i+)31 32 wSheet.Cells1,1+i=excelTable.Columnsi.ColumnName;33 34 /设置禁止弹出保存和覆盖的询问提示框35 app.DisplayAlerts=false;36 app.AlertBeforeOverwriting=false;37 /保存工作簿38 wBook.Save();39 /保存excel文件40 app.Save(filePath);41 app.SaveWo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论