2013-08-29 51 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