c#读取ExcelPRovider根据实际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//加载ExcelpublicstaticDataSetLoadDataFromExcel(stringfilePath){try{stringstrConn;strConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+filePath+";ExtendedProperties='Excel8.0;HDR=False;IMEX=1'";OleDbConnectionOleConn=newOleDbConnection(strConn);OleConn.Open();Stringsql="SELECT*FROM[Sheet1$]";//可是更改Sheet名称,比如sheet2,等等OleDbDataAdapterOleDaExcel=newOleDbDataAdapter(sql,OleConn);DataSetOleDsExcle=newDataSet();OleDaExcel.Fill(OleDsExcle,"Sheet1");OleConn.Close();returnOleDsExcle;}catch(Exceptionerr){MessageBox.Show("数据绑定Excel失败!失败原因:"+err.Message,"提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);returnnull;}}2.写入Excel内容,参数:excelTable是要导入excel的一个table表
[csharp]view plaincopypublicstaticboolSaveDataTableToExcel(System.Data.DataTableexcelTable,stringfilePath){Microsoft.Office.Interop.Excel.applicationapp=newMicrosoft.Office.Interop.Excel.ApplicationClass();try{app.Visible=false;WorkbookwBook=app.Workbooks.Add(true);WorksheetwSheet=wBook.Worksheets[1]asWorksheet;if(excelTable.Rows.Count>0){introw=0;row=excelTable.Rows.Count;intcol=excelTable.Columns.Count;for(inti=0;i<row;i++){for(intj=0;j<col;j++){stringstr=excelTable.Rows[i][j].ToString();wSheet.Cells[i+2,j+1]=str;}}}intsize=excelTable.Columns.Count;for(inti=0;i<size;i++){wSheet.Cells[1,1+i]=excelTable.Columns[i].ColumnName;}//设置禁止弹出保存和覆盖的询问提示框app.DisplayAlerts=false;app.AlertBeforeOverwriting=false;//保存工作簿wBook.Save();//保存excel文件app.Save(filePath);app.SaveWorkspace(filePath);app.Quit();app=null;returntrue;}catch(Exceptionerr){MessageBox.Show("导出Excel出错!错误原因:"+err.Message,"提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);returnfalse;}finally{}}转载的朋友请一定注明出处谢谢!http://blog.csdn.net/gisfarmer/