菜鸟求助,关于EPPlus操作excel保存后出现的问题

问题描述

本人用excel(xlsx)做数据源进行读取存储修改数据,添加或修改时时使用EPPlus进行操作,读取时用OleDbConnection类连接excel,使用sql语句查询,目前发现一旦使用EPPlus操作保存后,OleDbConnection类无法读取excel,报错“外部表不是预期的格式”,求大神指点源码:#region连接Excel读取Excel数据并返回DataSet数据集合///<summary>///连接Excel读取Excel数据并返回DataSet数据集合///</summary>///<paramname="filepath">Excel服务器路径</param>///<paramname="strCom">查询语句</param>///<paramname="table">表名</param>///<returns></returns>publicstaticSystem.Data.DataSetSqlConnection(stringfilepath,stringstrCom,stringtable){stringstrCon="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+filepath+";ExtendedProperties='Excel12.0;HDR=YES;IMEX=1'";OleDbConnectionExcelConn=newOleDbConnection(strCon);try{ExcelConn.Open();OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,ExcelConn);DataSetds=newDataSet();myCommand.Fill(ds,table);ExcelConn.Close();returnds;}catch{ExcelConn.Close();returnnull;}}#endregion#region连接维修日志Excel并根据序号修改纪录///<summary>///连接维修日志Excel并根据序号修改纪录///</summary>///<paramname="data">数据字典</param>///<paramname="filepath">Excel服务器路径</param>///<paramname="id">序号</param>///<returns></returns>publicstaticintaddRLog(Dictionary<int,string>data,stringfilepath,intid){objectmissing=System.Reflection.Missing.Value;Microsoft.Office.Interop.Excel.Applicationexcel=newMicrosoft.Office.Interop.Excel.Application();excel.DisplayAlerts=false;excel.Visible=false;excel.UserControl=false;//不以只读的形式打开EXCEL文件stringstrCom=string.Format("SELECTCOUNT(*)FROM[Sheet1$]where序号="+id);DataSetds=SqlConnection(filepath,strCom,"RLog.xlsx");returnadd(data,filepath,1,10,id+1);}#endregion#region连接Excel并修改纪录///<summary>///连接Excel并修改纪录///</summary>///<paramname="data">数据字典</param>///<paramname="filepath">Excel服务器路径</param>///<paramname="index">字典索引</param>///<paramname="column">列索引</param>///<paramname="row">行索引</param>///<returns></returns>publicstaticintadd(Dictionary<int,string>data,stringfilepath,intindex,intcolumn,introw){try{ExcelPackagepackage=newExcelPackage(newFileInfo(filepath));ExcelWorksheetworksheet=package.Workbook.Worksheets[1];for(;index<column;index++)worksheet.Cells[row,index].Value=data[index].ToString();worksheet.Cells[row,1].Formula=data[1].ToString();package.SaveAs(newFileInfo(filepath));return1;}catch{return0;}}#endregion

解决方案

解决方案二:
我也遇到这种情况,处理方法是用另一种方法重新保存一下Excel文件就可以访问了。Microsoft.Office.Interop.Excel.ApplicationExcelApp=newMicrosoft.Office.Interop.Excel.Application();Microsoft.Office.Interop.Excel.WorkbookExcelDoc=ExcelApp.Workbooks.Open(“文件名”);ExcelDoc.Save();ExcelApp.Quit();
解决方案三:
要么都用微软官方插件,要么都用epplus,两者结合不是给自己找麻烦吗?和web结合的情况,尽量不用微软的com组件当某列数据中有混合类型时,在使用Microsoft.Jet.OLEDB.X.0来读取Excel文件造成数据丢失是不可避免的。COM组件读取Excel文件效率低,释放的时候经常碰到不可预知的错误,尤其是Web应用。建议看看EPPlus官方的源代码和例子,有很多和web有关的,效率很好。

时间: 2024-09-20 06:13:47

菜鸟求助,关于EPPlus操作excel保存后出现的问题的相关文章

求助:C#操作Excel 校验每一列的字段及类型

问题描述 大家好,我这里有个需求,需要读取Excel各个列及每列的字段类型,进行校验判断每一列的值是否符合我指定的类型及格式.现在不知道如何获取每一列的字段类型,求助大家谢谢 解决方案 解决方案二:数据量不大的情况下,就一个单元格一个单元格的去判断.解决方案三:引用1楼zbdzjx的回复: 数据量不大的情况下,就一个单元格一个单元格的去判断. 哦没有更方便的方法吗?逐个单元格判断倒是个办法解决方案四:每个单元格的样式都是可以单独设置的,所以不大可能统一按列来检查解决方案五:引用2楼dreamfl

菜鸟求助!点击服务器按钮自动后却自动在文本框里添加一些&amp;amp;#x27;,&amp;amp;#x27;为什么呢?

问题描述 我的源码是这样子的:<formid="form1"runat="server"><asp:ButtonID="Button1"runat="server"Text="Button"/><%for(inti=0;i<4;i++){%><asp:TextBoxID="TextBox1"runat="server"&

ASP操作Excel后进程无法结束

问题描述 ASP操作Excel后Excel进程无法结束,每操作一次就会增加一个Excel进程.protectedvoidButtonGetFile_Click(objectsender,EventArgse){stringstrErr="";stringstrTCTempFileName="";AddNewTC();ApplicationmyExcel=newApplication();try{InterService.CInterServiceinterServi

C#用webbrowser在Form中嵌入并且操作Excel表格,如何让他不提示是否保存并取消保存?

excel|web 一.首先简要回顾一下如何操作Excel表             先要添加对Excel的引用.选择项目-〉添加引用-〉COM-〉添加Microsoft   Excel   9.0.(不同的office讲会有不同版本的dll文件).           using   Excel;           using   System.Reflection;                     //产生一个Excel.Application的新进程           Exce

求助 操作EXCEL报的一个错误 附代码

问题描述 stringfilename="C:\Inetpub\wwwroot\xlstest\m.xls";objectmissing=Missing.Value;Excel.ApplicationmyExcel=newExcel.ApplicationClass();myExcel.Application.Workbooks.Open(filename,missing,missing,missing,missing,missing,missing,missing,missing,m

如何上传Excel直接读取里面的数据,不用保存excel文件后再读取

问题描述 HttpPostedFileBasemypostfile=Request.Files[0];stringmyfile=MyPathEx.myfileName(@"事业单位准考证上传");myfile=myfile+".xlsx";myfile=MyPathEx.saveFile(mypostfile,Server,@"/ImportFile/",myfile);//保存上载文件的内容,并返回上传的路径+文件名ExamineeOp_1.S

C#操作Excel在单元格插入文本后单元格格式丢失

问题描述 最近用c#做excel文件内容检查工具,在某个单元格插入内容之后该单元格的原有格式全部丢失,有没有大神有更好的解决方案? 解决方案 解决方案二:什么格式丢失了?解决方案三:另外你的"插入"是使用什么方式来实现的?我们使用Microsoft.Office.Interop.Excel来处理大型的政府和事业单位规定的复杂报表,从来没有听说设置单元格的值会丢失格式.解决方案四:在Excel的指定范围内收索文本privatevoidtsbtn_Query_Click(objectsen

最近使用EPPlus 3.1.3操作EXCEL文件的时提示Error saving file E:\\***

问题描述 最近使用EPPlus3.1.3操作EXCEL文件的时提示ErrorsavingfileE:\***:请哪位大侠帮忙指点下,谢谢!C#语言调用,该问题时常碰见,调试也不一定出现,文件都正常,没有被占用等,之后的操作也可能会成功. 解决方案 解决方案二:其中innerException提示是"给定关键字不在字典中."

jxl 操作excel 求助!!

问题描述 JXL操作excel列分组谁用过没?jexcel_2_6_12中writablesheet有setcolumngroup(intcol1,intcol2,booleanargs);这个方法.但是列分组的层次结构是右往左缩进,请问有没有什么方法是让左向右缩进的???? 解决方案 解决方案二:该回复于2010-08-19 15:27:47被版主删除