以编程方式创buildExcel 2007工作表

我正尝试以编程方式创buildExcel 2007文档。 现在,我find了两种方法:

  • 手动创buildXML,如本文所述
  • 使用ExcelPackage等第三方库。

目前,我使用ExcelPackage,它有一些非常严重的缺陷和问题。 因为我不需要创build过于复杂的Excel工作表(最“复杂”的是我明确需要设置一个单元格types为数字或文本),我正在寻找接下来的选项1,但我只是想知道是否有任何其他良好和受支持的方式来生成Excel 2007表? 奖励点数,如果他们可以创build,而不必将其保存到硬盘,即生成并直接输出到一个stream。

.net 3.0是这里的目标,没有3.5善良:(

编辑:到目前为止感谢。 XML SDK确实只有3.5,但是俄罗斯的Roulet … erm … COM Interop也是我想尽可能避免的事情,特别是因为Excel 2007有一些复杂但是很容易创build的文档格式。 我会看看发布的各种链接和提示。

您可以尝试使用Office Open XML SDK 。 这将允许您使用一个MemoryStream来创build内存中的Excel文件,而不是手工生成所有的XML。

正如Brian Kim所指出的那样,2.0版本的SDK需要使用.NET 3.5,但您所说的不可用。 SDK的版本1也支持.NET 3.0。 它并不完整,但至less可以帮助您pipe理文档的XML部分以及它们之间的关系。

我只是生成HTML表格,可以通过Excel打开:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Wnioski</title> <style type="text/css"> <!-- br { mso-data-placement: same-cell; } td { mso-number-format: \@; mso-displayed-decimal-separator: "."; } --> </style> <table> <tr style="height:15.0pt"> <td style="mso-number-format: general">474</td> <td>474</td> <tr> <td>data2</td> <td>data3</td> <tr> <td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td> <td style="mso-number-format: standard">0.00</td> <tr> <td style="mso-number-format: general">line1<br>line2<br>line3</td> <td></td> </table> 

这也可以作为Word中的连续字母的数据源,与OpenOffice的计算等工作。它是死的简单生成。

我打算对BKimmel的post发表评论,但显然我还没有足够的SO点。

如果Excel已经打开,你可以得到那个恼人的“personal.xls已经打开”的消息。 我尝试先获取应用程序。 如果失败了,那么创build它:

 On Error Resume Next Set myxlApp = GetObject(, "Excel.Application") If Err.Number <> 0 Then Err.Clear Set myxlApp = CreateObject("Excel.Application") If Err.Number <> 0 Then ' return False, show message, etc. End If End If 

我在SpreadsheetGear for .NET中完成了大部分的Open XML(xlsx)工作,这远不是一件简单的事情。 我build议使用Office Open XML SDK或其他第三方库(如SpreadsheetGear或我们的竞争对手之一)(只需Google“SpreadsheetGear”查看我们的竞争对手是谁)。

SpreadsheetGear for .NET似乎可以满足您的需求:

  • 适用于.NET 2.0,.NET 3.0和.NET 3.5。
  • 支持使用IWorkbook.SaveToStream写入stream或使用IWorkbook.SaveToMemory写入字节数组。
  • 支持Excel 97-2003(xls)工作簿,如果您需要支持很多用户,这些工作簿很可能是您要求的下一个工作。

你可以在这里下载一个免费的,function齐全的评估。

Excel通过COM对象可以编写脚本。 我还没有尝试过,但这应该是一个坚实的解决scheme,虽然既不快速也不轻量级。

不pipe你最终做什么,检查你的解决scheme是否支持Unicode。 使用现有解决scheme编写xls文件(即2007年以前的文件),我遇到了一些严重的问题。

您可以使用主互操作程序集(Office API)以编程方式生成Excel文档 – 我不想使用它们进行过于复杂的任何操作,但听起来不像这是您的要求。

这种方法也适用于在内存中生成文档。

这里有一些资源:

  • 安装主互操作程序集
  • 如何创build新的Excel工作簿 (从MSDN)

我曾经使用函数库来生成Word处理标记文档,以便为表和段落创build正确的XML。

然后,我将Response头的MIMEtypes更改为word文档,并将XML作为响应发送给客户端。 它可以在浏览器中打开或保存为文件。

虽然有MS Open XML SDK,但似乎没有相同的2003 Excel for Excel

每个代码 – 活塞讨厌vbscript,但它很简单,它的工作原理:

 Set myxlapp = CreateObject("Excel.Application") Set mywb = myxlapp.Workbooks.Add myxlapp.Visible = true 

把它放在一个文本文件中,在末尾附加一个“.vbs”。