2012-04-18 23 views
0

我正在使用asp.net的FileUpload控件並上傳Excel中的一些數據。我無法將其保存在某個文件夾中。我可以有excel表格文件流,或者我可以在將excel上傳爲Blob後使用Blobstream。現在我想將Excel表格第一張表格轉換爲數據表格,我該怎麼做?我正在使用C#.NET。我不想使用Interop庫。我可以使用外部庫。 Oledb連接失敗,因爲我沒有任何作爲數據源的excel物理路徑。我嘗試以下鏈接:閱讀azure上的excelsheet作爲blob上傳

1)http://www.codeproject.com/Articles/14639/Fast-Excel-file-reader-with-basic-functionality

2)http://exceldatareader.codeplex.com/

請幫助。

回答

2

根據Excel的文件類型,您可以使用您發佈的例子或去爲OpenXML的選擇項(XLSX文件):http://openexcel.codeplex.com/

現在,物理路徑的問題很容易解決。將文件保存到blob存儲非常棒。但是,如果你想,你可以保存在本地資源使它在本地。這將允許您使用簡單的OleDb連接來處理文件。一旦你完成了這個文件,你可以從本地資源中刪除它(它也會在blob存儲中使用,因爲你也在這裏上傳了它)。

不要忘記有一些清理機制,以防您的處理失敗。你不想最終得到一張充滿臨時文件的磁盤(儘管在這種情況發生之前可能需要一段時間)。

瞭解更多關於這裏的本地資源:http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

+0

在openexcel你告訴我以前的手必須知道在Excel工作表中,這是不可能的行和列。但是關於本地存儲的效果很好。感謝您的本地存儲幫助。現在我可以搜索任何解決方案。起初我並沒有尋找這樣的解決方案。 – Dhananjay 2012-04-20 05:53:45

+0

我將應用程序池設置更改爲32位,並且oledb連接開始工作,所以我使用了它。 – Dhananjay 2012-05-11 12:19:29

0

我第一次創建本地存儲爲每個鏈接:

http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

通過Sandrino建議以上。感謝Sandrino爲此。然後我用oledb連接,它給了我一個錯誤「Microsoft.Jet.Oledb.4.0 dll未註冊」。然後,我登錄到Azure服務器,並在IIS中更改了32位應用程序池配置。若要更改應用程序池爲32位參考以下鏈接:

http://blog.nkadesign.com/2008/windows-2008-the-microsoftjetoledb40-provider-is-not-registered-on-the-local-machine/

0

你遵循的做法是不正確的,因爲你說你登錄到Azure和改變,VM這是在Azure上運行對你來說不是永久的。對於任何更新,您將獲得新的VM機器。你可能不得不爲此轉向,而不是手動修改。您可以使用Azure應用中的啓動任務。請參閱下面的鏈接,它可能會幫助你。

http://msdn.microsoft.com/en-us/library/gg456327.aspx