2010-10-12 62 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