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

 

Aas.Net上傳Excel讀取時丟失數據的問題

Aas.Net上傳Excel讀取時丟失數據的問題2008-09-20 17:30:58摘要:研究了ISAM驱动限制,分析了在.NET中采用Microsoft.Jet.OLEDB读取Excel文件产生数...
  • msikruby
  • msikruby
  • 2009-06-02 12:57:00
  • 717

C#使用流读取文件中的数据

对于数据的存储来说,如果是少量的数据的话,用txt或者excel是很方便的,因为很直观,无需写SQl语句。但是如果从这些文件中读取数据到数据库就成了问题。  C#的数据流操作可以很好的解决这个问...
  • silence432
  • silence432
  • 2013-09-17 16:57:22
  • 1691

不是钱,而是原则问题

   当某人告诉你:“不是钱,而是原则问题”时,十有八九就是钱的问题。       照一般的说法,金钱是价值的尺度,交换的媒介,财富的贮藏。但是这种说法忽略了它的另一面,它令人陶醉、令人疯狂、令人激动...
  • jin1980
  • jin1980
  • 2006-02-23 20:52:00
  • 495

C#開發 好問題

  • 2013年07月11日 10:25
  • 363KB
  • 下载

C#中Decimal保存到SQL数据库中时的宽度问题

如果把某个用于输入一个Decimal类型的文本框的MaxLength设置成16位的话,然后在C#中使用Decimal.Parse解析是没问题的,但在保存到数据库中一个字段类型为Decimal(18,4...
  • bclz_vs
  • bclz_vs
  • 2011-06-14 16:47:00
  • 1918

ORACLE常用問題1000問

  • 2009年04月16日 13:19
  • 83KB
  • 下载

C#如何读取Excel文件

C#读取Excel文件方法一:直接读取(这种直接读取单元格的方法释放很重要) Excel.Application excel=null;   Excel.Workbooks wbs=n...
  • springflower66
  • springflower66
  • 2016-06-29 08:25:50
  • 239

C#读取Excel源码

  • 2009年09月28日 15:47
  • 810B
  • 下载

ORACLE常用傻瓜問題1000問全集

  • 2009年09月21日 13:04
  • 168KB
  • 下载

NPOI文件下載

  • 2017年06月02日 14:38
  • 1.09MB
  • 下载
收藏助手
不良信息举报
您举报文章:ASP.Net C# 在64bit下讀取EXCEL問題
举报原因:
原因补充:

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