以编程方式创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: "yyyy-mm-dd"">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”。