2010-10-12 54 views
0

我正在開發一份工作申請。每個作業都會生成一個excel文件。我將有50個並行工作。所以50個excel文件將並行生成。excel在c中的處理#

我使用C#3.5和Excel 2003.問題是我無法實例化更多的Excel對象。我得到COMException。那麼我是否需要一次只創建一個excel處理?你有這個解決方案嗎?

請幫我。

編輯:

Excel的genration不需要用戶交互。它是一個預定的工作。

我正在生成Excel(xls)。我需要在Excel中進行格式設置和着色,所以我不能使用csv。現在我已經同步了代碼,所以一次只有一個作業處理Excel。但它花費了太多時間,因爲一次只有一個excel處理。

任何類型的Excel池化邏輯將有所幫助?請指導我。

+0

你有50個同時打開的文件嗎?你能提供一些代碼嗎? – 2010-10-12 13:00:20

+1

你生成的確切格式是? .xls的? .xslx? .csv文件? – 2010-10-12 13:01:57

+0

你真的需要50個文件嗎?你可以使用一個包含50個工作表的文件嗎? – TMN 2010-10-12 13:34:29

回答

1

要做到這一點,你需要啓動50個Excel實例,這是行不通的。

你有3種選擇:

  • 使用Open XML SDK 2.0 for Microsoft Office。這允許你寫入一個excel文件,就像它是一個xml文件一樣。無需啓動Excel。
  • 使用SharePoint Excel Services。這使您可以執行服務器端Excel處理。無需啓動Excel。問題在於包含Excel Services的SharePoint版本非常昂貴。
  • 按照您的建議一次處理一個文件。
+0

Excel 2007支持Open XML,但我需要支持Excel 2003. – jaks 2010-10-12 13:23:21

+0

由於Open XML是我的問題的唯一選項。移至Excel 2007並打開xml。 – jaks 2010-10-12 15:19:30

0

50個excel文件的生成是否需要用戶交互?
如果沒有,您可以創建生成文件的夜間作業。

如果它是一種純文本格式(或CSV),則不需要Excel。
另外,您可以使用一個excel實例來一個接一個地生成所有文件。

1

ooooh我曾經有過這樣的問題b4。

我的解決方案是我使用html excel。老實說,它有點愚蠢的解決方案,但它工作得很好,很容易實現。

1創建HTML模板有點像這樣

<html> 
<body> 
name - <div>$<name>$</div> 
</body> 
</html> 

2看了你的模板字符串

System.IO.StreamReader stream = new System.IO.StreamReader(""); 
string template = stream.ReadToEnd(); 
template = template.Replace("$<name>$", "John"); 

3,那麼你的字符串保存爲.xls的

**創建一個模板牀單很容易。

1創建Excel模板,像你在Excel

2通常做在小區ü要在$$名$$替換YOUT值類型*注意,上面我使用$ <「價值」> $。但如果我們做到這樣,我建議ücahnge至$$名$$ becus爲<和>練成該怎麼辦的HTMLEncode我們

3 u能創造出許多張爲u喜歡

4「另存爲」。 mht

5然後將file.mht更改爲.xls和string.Replace(「$$ name $$」,「John」);

+0

在我過去的生活中,我已經做到了這一點,並且工作得很好。 Excel基本上是表格數據。您使用HTML標籤格式化了很多格式,並且excel會正確打開您的文件。 – Pradeep 2010-10-12 14:08:59

+0

請重新導向我的一些鏈接,所以我可以得到更多的信息。我的方案是我將有一個包含多個工作表的Excel工作表,我需要格式化Excel,在其中創建圖表。使用這種html類型可以生成圖表嗎? – jaks 2010-10-12 14:13:55