ASP.Net C# 在64bit下讀取EXCEL問題

原创 2009年11月19日 15:21:00

ASP.Net C# 64bit下讀取EXCEL問題

32bit下,ASP.Net 讀取EXCEL可以透過OLEDB,ODBC等連接driver來直接讀取。然而到了64bit時,microsoft不在支援上述driver,導致讀取excel時變得痛苦萬分。(并聯想到引用32bit dll時的痛苦。。。。。)

winform編程時,當然可以利用將程式編譯成32bit來運行(右鍵專案à屬性à可選擇CPU類型),然而如果是透過IIS來搞,就麻煩了。

一般IIS6.0 是支援32bit 64bit的,但可惜的是,不同時支援兩者。(到了IIS7.0就可以了) 下面主要講講如何在IIS6.0 ASP.Net 2.0 (64bit)下,讀取Excel的問題,這也是最近一直在琢磨的東西,但還是未找到完美的解決方法。

1.      淒涼的 Microsoft.Jet.OLEDB.4.0 不能用了。

一切要從server的升級說起,一天老大要將server升級(32bit升級到64bit),於是所有的程序都要測試過,大部份都是沒有問題,但是在一個function user透過web上傳excel,然後讀取excel將資料importSQL Server)時,發現資料未寫入DB。。。

OKdebug, 發現excel有通過web service上傳到伺服器,所以應該是讀取excel資料時發生問題,測試后報錯:Microsoft.Jet.OLEDB.4.0 not regist..

Google老師告訴我,在64bit上已經沒有此類driver了。。。哭。。。

繼續google。。。發現。。。。

2.      切換IIS6.0 64bit 32bit

當你的IIS只是6.0的時候,你只有選擇32bit 或者64bit, microsoft又告訴我,可以切換到ASP.Net 2.0(32bit),就可以正常讀啦。

一高興,測試,果然成功。。。哇哈哈哈哈。。。

但是問題來了,此server還裝有SQL server 2005 64bit版本,造成其reporting service無法用了。。再次哭。。。

p.s. 切換方式可以在microsoft網站上找到(如下)

.    按一下 [開始],再按一下 [執行],輸入 cmd,然後按一下 [確定]

.    輸入下列命令以啟用 32 位元模式:

cscript %SYSTEMDRIVE%/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

.    輸入下列命令以安裝 ASP.NET 2.0 (32 位元) 的版本,以及在 IIS 根目錄和下列位置底下安裝指令碼對應:

%SYSTEMROOT%/Microsoft.NET/Framework/v2.0.40607/aspnet_regiis.exe -i

.    請確定在 Internet Information Services Manager Web Service Extension 清單中,將 ASP.NET 2.0.40607 (32 位元) 的狀態設定為 Allowed

 

3.      沒辦法了,只要利用第三方dll來讀取了。

在此找到幾個較好的: xlReader(需付費) , IExcelDataReader(好像免費), Aspose.Cells(需付費)

第一個xlReader,測了幾下,沒成功,放棄。

第二個,很好用(關鍵是免費哈),但是碰到問題,在讀取excel2007時,一切都正常,在讀取excel2003英文版時也OK,就是讀取excel2003繁體中文版時,葛兒屁了。。。。。。

基本用法如下(網上都有)

 

第三個,哎。。。太貴了,貌似一個licence $599 …網上有一個破解版,我下了用用,挺好用的(.net 2.0),本著支持正版的原則,要用的同學自己google吧,我就不提供網址了。

4.      如果覺得以上方法都麻煩,那就別讓user上傳excel了,直接傳csv吧,就

可以用類似讀取txt的方式來讀取資料了。。。

5.  如誰有更好的方式,歡迎分享…如能留言,短信給偶,更是感激萬分。。。

 

讀入scanf,%d和%lld問題

在做一道題目時,用不同的格式化字符讀入在不同的OJ上會有不同的結果。 poj_2689/ uva_10140 Prime Distance poj題目鏈接:http://poj.org/probl...
  • xyinktw
  • xyinktw
  • 2015年06月27日 20:53
  • 351

C#读取Excel五种方式的体会

 (1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据...
  • dapengbusi
  • dapengbusi
  • 2014年07月25日 15:05
  • 11899

C#读取excel数据

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...
  • weixin_36602742
  • weixin_36602742
  • 2017年03月10日 15:22
  • 867

C# 读取Excel文件代码

片段 1 using System.Data.OleDb; ... static void Main() { Application.Run(new Form1()); } priva...
  • guobing965816
  • guobing965816
  • 2014年04月23日 16:53
  • 2252

C#读取Excel 几种方法的体会

(1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据源,直接...
  • aabbjj
  • aabbjj
  • 2014年09月23日 16:23
  • 1122

C# StreamReader的指针问题

通常StreamReader是不需要指针的,因为只要一行一行读取,或者一次性全部读取就可以搞定。但也不排除碰到读取一行或者多行后,需要返回从第一行重新读取的时候,这就需要将指针返回到流的起始位置。 因...
  • leedoom
  • leedoom
  • 2015年10月20日 09:34
  • 1218

MyBatis的一些小問題

1.ResultType與ResultMap的區別 如果你的返回結果只有一個值比如String,int什麽的用ResultType就行。如果返回的是一個較複雜的對象那麼用ResultMap比较有优...
  • z441837011
  • z441837011
  • 2013年07月22日 00:51
  • 238

关于C#,ASP.NET 生成Excel表格的两种方式(Datatable转Excel)

列举一些编程过程中常用代码,如Datatable转换为Excel表格给用户下载,包含了生成Excel的方法,绝对路径转换相对路径的方法,替换Html标签的方法,Json数据转换为Datatable的方...
  • u013542549
  • u013542549
  • 2017年05月04日 18:12
  • 17299

leetcode相加和的問題

之前一直在思考是就在当前目录下写,还是直接开个目录写,想了想,还是直接就在hdu下面写吧,反正都是算法。 1. Two Sum Given an array of integers, ...
  • justperseve
  • justperseve
  • 2016年10月10日 21:02
  • 104

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

第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(st...
  • lybwwp
  • lybwwp
  • 2014年02月28日 14:28
  • 21110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.Net C# 在64bit下讀取EXCEL問題
举报原因:
原因补充:

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