2012-06-07 119 views
0

我將要在通用工具工作編寫基於關閉數據庫中的數據的Excel文件。 我已經有幾個方法工作過:
將數據導出到Excel電子表格

1)創建一個CSV文件
Excel將打開它,並與每個值進入一個單元格格式化數據,每行一個行。
缺點:文件擴展名不總是會被用Excel默認打開。
它似乎在非常大的數據源上「切斷」。從內存中來看,在Excel文件的其餘部分被「忽略」之前,它大約有65,000行。

2)生成一個XML電子表格
http://msdn.microsoft.com/en-us/library/bb226687(v=office.11).aspx
缺點:當打開「你試圖打開**文件是不同的格式不是由文件擴展名指定的」錯誤的。它確實打開,但它不會激發信心。
使SQL-to-XML編寫變得尷尬。

前段時間我簡單地看過使用excel Interop方法。我確信在嘗試從沒有安裝excel/office的服務器運行代碼時遇到了問題。這個幾乎總是如此

一般的代碼會被執行或者通過網頁或Silverlight的WCF服務(如果有差別)。
通過電子郵件發送給用戶,或者也將很高興有選項打開文件直接,並允許他們保存。
包括標題/顏色/公式的將是一個獎金

主要在他們只會複製/粘貼數據的時刻。
但是對於大型數據集,它很容易失敗,或者確實很慢。

任何人給我的最好的想法如何去了解它

+1

您可以編寫HTML表格並使用* .xls文件擴展名。 Excel將在第一次打開時將其轉換爲Excel文件。不支持公式,但會給你一點格式。除此之外,您唯一的選擇是使用第三方工具。 – JDB

+0

重新互操作「幾乎總是如此」 - 未安裝Excel或正在安裝Excel? –

+0

XML文件上的什麼擴展會導致有關「不同格式」的消息? –

回答

1

你可以使用一個商用產品,如Aspose.Cells產生在C#中的服務器上的Excel電子表格,而無需安裝Office。他們有一些sample code,如果您想查看對象模型的外觀,它可以在aspx.cs頁面中生成電子表格。

不幸的是,他們的定價方案是好不尷尬,如果你有一個以上的開發誰從源頭控制獲得的代碼,並建立它;他們正式認爲你是同一團隊的一員,並且需要每個開發人員的許可證(即使你是直接在該代碼上工作的唯一程序員)。

+0

謝謝。但我不認爲購買商業解決方案將是一種選擇。 –

1

由於CSV有大後的行數切斷的問題,這種方法也不行。

使用互操作是棘手的。除了確保您在服務器上安裝了Excel和PIA之外,還需要在單個線程中運行Excel代碼(使用某種排隊機制)。否則,你會開始遇到這方面的問題。

XML實際上似乎是最可靠的解決方案,除了容易混淆的信息外。如果您可以在評論中回答我的問題,那麼我們也可以爲您提供幫助。

PS。如果您可以在生成Excel工作表之前確定行數(您應該),則可以使用以下兩種格式之一來交付結果:小型文件爲CSV,大型爲XML,折衷爲混淆消息(已提供它不會消失)。根據文件超過CSV閾值的百分比,這可能是一個可以接受的折衷方案。

+0

我已經嘗試將它保存爲'.xml' - 但它不會默認打開Excel(通常是IE)。和'.xls'在打開時給出上述錯誤信息。 (我在Office 2007上進行過測試,但我認爲電子表格XML格式可能適用於2003年,這增加了混淆)。 –

+0

你試過.xlsx嗎? –

+0

.xslx根本無法打開!雖然.xls給了我一個警告,但是讓我打開它,.xlsx只是說它已經損壞/無效並關閉。 –

1

我推薦使用EPPlus,很容易將DataTable s轉換爲Excel文件,並允許大量的樣式選項甚至數據驗證。你甚至不需要在服務器上安裝Excel。

相關問題