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

转载 2006年06月11日 18:19:00

今天有个同事问我个问题,他在用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了

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

今天有个同事问我个问题,他在用C#“Microsoft.Jet.OLEDB.4.0”读取EXCEL文件的时候,发现了一个问题,是这样的,他读出来的EXCEL数据在DATAGRID中显示的时候,只有文本...
  • TomyGuan
  • TomyGuan
  • 2007年02月28日 09:59
  • 996

1342. 开心的金明

1342. 开心的金明 Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品...
  • luojiayu14
  • luojiayu14
  • 2011年12月26日 00:18
  • 6670

关于ASP.NET读取EXCEL表格的办法

NET 讀取Excel 2007的xlsx文件和讀取老的.xls文件是一樣的,都是用Oledb讀取,僅僅連接字符串不同而已。 讀取xlsx 用的是Microsoft.Ace.OleDb.12.0; ...
  • COOLJAE
  • COOLJAE
  • 2016年09月07日 14:45
  • 633

解决SharePoint2013 升级后的网站集瘫痪的问题。“很抱歉,出了问题。文件未找到”

 解决SharePoint2013 升级后的网站集瘫痪的问题。“很抱歉,出了问题。文件未找到” 由于操作系统和SharePoint都提示需要升级。客户要求比较升级完成才能做下一阶段交付。 P...
  • jason_dct
  • jason_dct
  • 2016年04月25日 10:51
  • 1325

NOIP 金明的预算方案

【题意】 题目描述 Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购...
  • just_sort
  • just_sort
  • 2016年04月07日 14:03
  • 1135

NYOJ--49(动态规划)-题目----------------------------- 开心的小明

/*开心的小明 时间限制:1000 ms | 内存限制:65535 KB 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。 更让他高兴的是,妈妈昨天...
  • u013091087
  • u013091087
  • 2015年02月17日 12:48
  • 718

关于.NET读取EXCEL文件的问题

在用C#“Microsoft.Jet.OLEDB.4.0”读取Excel文件的时候,发现了一个问题,是这样的,他读出来的Excel数据在DATAGRID中显示的时候,只有文本的数据能够读出来,比如某一...
  • sandykwx
  • sandykwx
  • 2013年01月17日 09:48
  • 108

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

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

NYOJ 题目49开心的小明(01背包)

开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让...
  • yu_ch_sh
  • yu_ch_sh
  • 2014年09月21日 11:24
  • 412

.NET读取EXCEL文件的问题

今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用! 今天有个同事问我个问题,他在用C#“Microsoft.Jet.OLEDB.4.0”读取EXCEL文件的时候,发现了一个问题,是这...
  • leibaoling
  • leibaoling
  • 2006年06月12日 19:25
  • 1171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
举报原因:
原因补充:

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