.NET读取EXCEL文件的问题

转载 2006年06月12日 19:25:00

今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!

今天有个同事问我个问题,他在用C#“Microsoft.Jet.OLEDB.4.0”读取EXCEL文件的时候,发现了一个问题,是这样的,他读出来的EXCEL数据在DATAGRID中显示的时候,只有文本的数据能够读出来,比如某一个单元格里面的数据是纯数字的话,那么在DATAGRID里面显示的空的,什么都没有,他让我看看,我找了好半天的原因没有找到,后来实在没有办法,就换个方法读,用COM组件,引用了EXCEL组件之后,Excel.Applicatioin ea=new Excel.ApplicationClass();执行的时候就报错,“访问被拒绝”,发现了这样两个问题,今天晚上找了好半天的方法,终于解决了。

1,用Microsoft.Jet.OLEDB.4.0读取EXCEL数据的代码是这样的:
     string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/aa.xls;Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
 
   OleDbConnection Conn=new OleDbConnection(ConnStr);
   Conn.Open();
   string SQL="select * from [sheet1$]";
   OleDbDataAdapter da=new OleDbDataAdapter(SQL,ConnStr);
   DataSet ds=new DataSet();
   da.Fill(ds);
   DataGrid1.DataSource=ds;
   DataGrid1.DataBind();

很简单的代码,但是问题就出在连接字符串上面,后面一定要加上Extended Properties='Excel 8.0;HDR=NO;IMEX=1',HDR和IMEX也一定要配合使用,哈哈,老实说,我也不知道为什么,这样配合的效果最好,这是我艰苦调试的结果.IMEX=1应该是将所有的列全部视为文本,我也有点忘记了.至于HDR本来只是说是否要出现一行标题头而已,但是结果却会导致某些字段值丢失,所以其实我至今也搞不明白为什么,很可能是驱动的问题...


2,

由于ASPNET属于网络用户,所以如果网络用户要调用本地的进程或者程序,比如创建文件夹等,都需要给ASPNET加上本地用户的权限,所以报错中“ASP.NET 有一个在应用程序没有模拟时使用的基进程标识”,解决方法是在web.config文件中加上<identity impersonate="true"/>
结点,这个结点的用途见ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpgenref/html/gngrfIdentitySection.htm

还有个问题,加入在页面中对EXCEL进行了操作,需要保存的时候,当创建一个新的文档或者保存一个修改过的文档时:

代码是:test.SaveAs (ConfigurationSettings.AppSettings["Excel"] + DocName.Text + ".xls");

出现如下错误:

无法打开宏储存。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 无法打开宏储存。
解决方法:
在运行中输入dcomcnfg
在组件服务==>计算机==>我的电脑DCOM找到:




打开之后出现下面的界面,



点访问权限,


看到上面的界面之后大家该知道怎么做了吧,添加了aspnet用户,然后给权限就OK了

Ado.Net操作Excel文件数据常见问题及解决

经常需要在数据库与Execl之间互导数据。net时代,ADO.NET可以使用使用Microsoft.Jet.OleDb访问访问Excel,网上已经有很多类似的资源,最典型也是最简单的可能如下:(asp...

Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)

转自:http://www.cnblogs.com/smjack/archive/2009/02/26/1398748.html 上半部分经过本人实际测试,完全可用!至于下部分解决讯雷下载的未实际测...
  • asciil
  • asciil
  • 2013年01月14日 16:13
  • 430

Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)

这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法。 生成Excel文件的方法,见:【原】.Net创建Excel文件(插入数据、修改格式、生成图表)的方法 先试用Response...

Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)

这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法。 先试用Response.WriteFile的方法: FileInfo fi = new FileInfo(excelFile...

ASP.NET(C#) 读取EXCEL问题汇总

使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可。 一 在D盘创建excel文件test.xls:    二 将工作表Sheet1的内容读取到DataSet ...

.NET读取Excel文件内容

开发过程中难免会遇到读取Excel文件的情况,本文主要记录读取Excel文件的方法由于本文目的是供自己和各位童鞋日后学习参考,没有考虑过多方面,把所有方法及属性全部放到了一个文件中。   ...
  • wqlsh
  • wqlsh
  • 2011年11月18日 14:56
  • 364

ASP.NET读取Excel文件的三大方法浅析

文章来自51CTO:http://developer.51cto.com/art/200907/139788.htm     ASP.NET读取Excel文件方法一:采用OleDB读取Exc...

.net 读取Excel文件的三种经典方法

1.方法一:采用OleDB读取EXCEL文件:   把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) ...
  • newnazi
  • newnazi
  • 2014年03月12日 21:18
  • 4486

asp.net读取Excel文件的两种方法,NPOI方法

第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(st...
  • lybwwp
  • lybwwp
  • 2014年02月28日 14:28
  • 20612

ASP.NET(C#)读取Excel的文件内容

http://www.jb51.net/article/34096.htm 开发过程中难免会遇到读取Excel文件的情况,本文主要记录读取Excel文件的方法由于本文目的是供自己和各位童鞋日...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET读取EXCEL文件的问题
举报原因:
原因补充:

(最多只允许输入30个字)