如何在没有Excel对象的情况下通过VB6创buildExcel工作表?

我最近负责更新VB6数据收集应用程序,添加生成Excel报告并通过应用程序打印的function(两者都必须在同一台计算机上完成)。 通常情况下,这不会是一个问题,我使用Excel对象之前生成Excel报告与VB6。

所以我继续编码,并把它们一起编码,然后告诉我,这个程序将被删除的机器将不会有Excel的完整副本,我必须想出另一个解决scheme。

我尝试创build分隔文件(逗号分隔或文本),但是当这些文件打开与Excel,他们不格式很好,即如果一个单元格有20个字符,一半的字符将被切断,由于固定的单元格大小。

我有一些更多的想法:

1)我知道openoffice有一个API。 这个API可以用来生成一个格式正确的Excel文件吗? 有没有我可以使用的COM对象?

2)我发现这个工具: http : //www.carlosag.net/Tools/ExcelXmlWriter/然而,它是用VB.NET编写的。 我仍然可以在VB6中使用这个工具吗?

我真的很难过,不知道下一个方向。 任何人有关于上面的utitiles的任何想法? 另外,我也接受任何其他build议/更好的方法。 任何可以帮助我完成这项任务的东西,将不胜感激!

注:将用于查看这些报告的Excel版本是Excel 2007

我们来看看这两个要求:

添加生成Excel报告并通过应用程序打印的能力

这个程序将被删除的机器[原文如此]将不会有完整的Excel副本

除非我误解了你们,这些似乎是相互排斥的。 如果你的意思是你只是在一台机器上生成报告,他们会在其他地方查看和打印,你可以尝试使用SpreadSheetML 。

当在Google上search有关SpreadSheetML的其他信息时,请仔细阅读:有很多错误信息将SpreadSheetML与Office 2007中用于Excel的新Xml格式相混淆.SpreadSheetML的工作原理与OfficeXP相同,即使在Office 2000中也是有限的。

您可以将excel文件保存为html。 在我写的一个web应用程序中,需要将数据导出为ex​​cel,我只是创build了一个像excel导出的html文件。 然后,我把它作为应用程序/ vnd.ms-excel。 Excel打开它就好了。 你也许可以做类似的事情。

你也可以find一个类似你链接的那个库,直接写新的办公文件格式,因为我认为它们是xml的衍生物。

像通常一样创buildCSV文件。

在打印之前,让桌面应用程序在XLS文件可用的机器上进行格式化。

如果您愿意安装.NET运行时,则可以将该库封装到选项#2中,并将.NET类暴露给COM。 该类只是将调用传递给ExcelXMLwriter。

另一种方法是研究XML标准并编写你自己的作者,但这可能是项目的矫枉过正。

至于OpenOffice看看这里 。 特别是这个页面的VBA部分。 似乎有一个COM组件可以使用。

可以在未安装Excel的计算机上创buildExcel工作簿**使用Jet连接 – 任何Jet连接 – 执行“创build表查询”SQL DML或CREATE TABLE SQL DLL,其中问题表是Excel之一,例如考虑这个VBA代码:

 Dim cat Set cat = CreateObject("ADOX.Catalog") With cat ' Create a new Jet .mdb .Create _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & _ Environ$("temp") & "\DropMe.mdb" ' Use .mdb's Jet connection to create an Excel table ' (will create a new workbook to contain it) .ActiveConnection.Execute _ "CREATE TABLE" & _ " [Excel 8.0;HDR=NO;Database=C:\db.xls;].[Sheet1]" & _ " (col FLOAT);" End With 

Jet是一个不推荐使用的Windows组件,它在Vista之前的Windows机器上一直存在,并且可以通过MDAC从MS免费下载。

这就是说,“要通过[Excel]应用程序打印它们”,您显然需要Excel应用程序!

**我认为这是可能的:我找不到没有Excel的机器在哪个testing!

检查此: http : //support.microsoft.com/default.aspx?scid=kb;en-us;Q271572

执行相同的操作,并以.xls扩展名保存文件。

或者,您可以创buildHTML表格in-momery内容并将其写入文件,扩展名为xls。

从VB6创buildSpreadsheetML文件应该非常简单这只是一个包含特定味道的XML文本文件。 我相信你可以从MSDN获取SpreadsheetML和WordML的所有文档。

我目前使用SpreadsheetML从vb.net应用程序生成大约60个不同的自定义报告。 由于Excel 2007中实现的文件扩展名和文档安全性的变化,至less有一个潜在的问题。如果您生成基于SpreadsheetML的Excel文件,并使用.xls扩展名,它将在2003年打开罚款。Excel 2007将popup一个对话框通知您文件扩展名与文件内容不匹配。 它将在警告对话框后正确打开并显示文件。 如果您将SpreadsheetML文档的扩展名更改为.xml,则Excel 2007将打开它,而不会有任何投诉。 但是,基于xml的电子表格可能会在运行Excel 2003的计算机上的IE中打开。

我使用NPOI它不使用Excel库,并以Excel 2003格式输出

我也会去与CSV选项。 不需要DLL或其他types的对象。 一个警告是非常小心你的数字使用的格式,因为值为1,024.00将创build两个列和软pipe整个工作簿。 它将被格式化为Format(Numberfield,“#########。#0”)

我find一个解决scheme:

我发现了一个可以用来创build和打印Excel Spreadsheets的DLL。 我认为这是相同的XML编写器,但VB6。