2013-08-29 80 views
1

我已經編寫了一些C#代碼,可以生成Excel XML文件格式,目前我正在使用Microsoft Office 2010 Professional Plus。該XML文件包含許多工作表,工作表可能包含數千行數據。工作表生成多個單元格,但每個單元格中的文本可能會格式化爲不同的字體顏色(而不是使用全局單元格字體顏色) - 可以使用類似於以下摘錄的一些XML;用XML格式化Excel內部單元格字體

<Cell ss:StyleID="Normal"> 
    <ss:Data ss:Type="String" xmlns="http://www.w3.org/TR/REC-html40"> 
     <Font html:Color="Red">Text in red</Font> 
     <Font html:Color="Blue">text in blue</Font> 
    </ss:Data> 
</Cell> 

但是,它會出現,如果我產生一個大的工作,有很多這樣的細胞也導致Excel的行爲「有點詭異。」通過我的意思是,當我試圖查看工作表時,我看到一些奇怪的渲染構件 - 從電子表格的頂部開始,它將慢慢地逐行顯示,直到第20行,此時它將暫停,再次清除,並重復該過程,這將繼續導致Excel無法響應,直到我使用任務管理器將其終止。

有人能解釋一下這個問題嗎?即使我是一名軟件開發人員,我也不確定這是否是一個編程問題,但我相信Excel可能無法應付這種性質的「大型」文檔,搜索谷歌似乎沒有提出任何問題有關此主題的信息,但很難找到適當的關鍵字。這對於Excel來說似乎是一件相當有趣的事情。

我已經嘗試將XML文件保存爲XLSX格式並重新打開,但運氣不佳。我也嘗試生成一個較小的數據集,導致Excel正常運行。我的臺式電腦應該足夠強大,可以處理這個問題,大量的RAM和新鮮的商店。

任何幫助讚賞,謝謝你的時間。

回答

1

工作表中生成多個細胞然而,在每個單元的文本可能格式化爲不同的字體顏色(而不是使用一個全球性的細胞字體顏色)

一件事看出來的是,Excel有在工作表中允許的唯一格式數量的限制。如果您使用內聯字符串格式(如您的示例中所示)作爲單元格的一般格式,那麼您可能會超出此限制。當施加到電子表格XML,這是一個Excel 2003格式

的在Excel 2007 unique cell formats is 64,000限,也可以是低到4000。

所以,你可能需要,如果你超過了單元格的格式限制重新使用一些全局單元格格式。

+0

感謝您的答覆,這是很好的有一個鏈接到一些東西,驗證你沒有做錯什麼自己,雖然Excel的行爲是相當瘋狂的,如果你使用的HTML標籤格式爲何要遇到性能問題後,現在所有的HTML渲染都很常見,這並不像MS在這之前沒有寫過網頁瀏覽器那樣完成同樣的工作。 (這是一種讓軟件工程師陷入困境的思維) – Phill