excel在c#中的处理
我正在开发一份工作申请。 每个作业生成一个excel文件。 我将有50个并行工作。 所以50个excel文件将并行生成。
我正在使用C#3.5和Excel 2003.问题是我无法实例化更多的Excel对象。 我得到COMException。 那么我是否需要一次只创build一个excel处理? 你有这个解决scheme吗?
请帮助我。
编辑:
excel genration不需要用户交互。 它是一个预定的工作。
我正在生成Excel(xls)。 我需要在Excel中进行格式设置和着色,所以我不能使用csv。 现在我已经同步了代码,所以一次只有一个作业处理Excel。 但是花费太多时间,因为一次只有一个excel处理。
任何types的Excel池逻辑将有所帮助? 请指导我。
要做到这一点,你需要启动50个Excel实例,这是行不通的。
你有3个选项:
- 使用Open XML SDK 2.0 for Microsoft Office 。 这允许你写一个excel文件,就好像它是一个xml文件。 不需要启动Excel。
- 使用SharePoint Excel Services。 这允许你做服务器端Excel处理。 不需要启动Excel。 与此问题是包含Excel Services的SharePoint版本是昂贵的。
- 按照您的build议一次处理一个文件。
哦,我曾经有这样的问题B4。
我的解决scheme是我使用HTML Excel。 老实说,它有点愚蠢的解决scheme,但它工作得很好,很容易实现。
1创buildhtml模板有点像这样
<html> <body> name - <div>$<name>$</div> </body> </html>
2以stringforms阅读你的模板
System.IO.StreamReader stream = new System.IO.StreamReader(""); string template = stream.ReadToEnd(); template = template.Replace("$<name>$", "John");
3然后将您的string保存为.xls
**创build模板表很容易。
1创buildExcel模板,通常在Excel中做
2在单元格中,您想要replace您在$$名称中的值types$$ *请注意,上面我使用$ <'value'> $。 但如果我们这样做,我build议你cahnge $$名$$因为<和> excel会为我们做HtmlEncode
3你可以创build很多工作表
4'另存为'.mht
5然后将file.mht更改为.xls和string.Replace(“$$ name $$”,“John”);
50个excel文件的生成是否需要用户交互?
如果没有,您可以创build一个生成文件的夜间作业。
如果它是纯文本格式(或CSV),则不需要Excel。
另外,您可以使用一个excel实例来一个接一个地生成所有的文件。