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

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.  如誰有更好的方式,歡迎分享…如能留言,短信給偶,更是感激萬分。。。

 

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

playwarcraft

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值