2010-12-14 45 views
1

我想知道制作这样的应用程序是多么困难。基本上,我有一些旧的HTML文件,使用表。我想将这些表格放入Excel中以便于阅读和操作。我只有文字,我没有任何公式或任何数字。可以制作excel电子表格(97 - 2003格式)

有没有关于如何做这种事情的任何教程?

的应用将产生的.xls

感谢

+5

为什么不用逗号分隔值格式呢?您可以在Excel中打开它,并且创建起来会更容易 – Bart 2010-12-14 18:24:34

回答

6

你有三个选择:

  1. 输出CSV file。虽然不是XLS文件,但Excel能够打开这样的文件,而且创建起来非常简单。您只需要使用标准C++来实现此解决方案。这是迄今为止输出到Excel(或任何电子表格程序)的最简单和最快捷的方式。

  2. 使用OLE自动化。 Microsoft甚至有a Knowledge Base article,它提供了一个如何从本地C++应用程序调用Excel并填写一些值的示例。如果您绝对需要输出XLS文件,这是最简单的方法。请注意,用户必须在他们的计算机上安装Excel以使其工作。

  3. 创建您自己的XLS作家。除非您真的想要生成XLS文件而不要求将Excel安装在最终用户计算机上,否则请不要使用此选项。选项1和2对于任何应用程序都足够好。

+0

这主要是很好的建议,但它留下了一个重要的选择。 SpreadsheetML是用于Excel文档的MS'OpenXML格式。这不是微不足道的,但至少与OLE自动化一样简单。 – 2011-01-12 23:19:06

0

这里有一个窍门:保存的.html表与扩展名为.xls和Excel可以读取他们(即Excel可以读取DataGrid控件的输出)。但是,如果你想创建'真正'的Excel文件,那么你可以使用Excel Interop(这可能很麻烦,需要在计算机上安装Excel和PIA,并且需要仔细的内存管理(因为它的COM))。你也可以选择FlexCel这样的第三方库 - 它可以避免许多InterOp问题,但不会给你“完整的”Excel功能(插件,自定义vba宏等)。然而,对于大多数用途来说,第三方库应该做到这一点。

+0

使用Excel与C#进行互操作是一个(相对)的蛋糕。它至少不比VBA更难。 – 2010-12-14 18:28:09

+0

@Alexandre 是的,但你需要正确元帅出来的内存,并确保你处理Excel的特定错误回报以及(如果该文件在一个糟糕的宏碁或会发生什么,如果有外部链接?或者,如果工作簿受保护吗?或者工作簿几乎达到了可用对象的限制等)。为了让它工作起来很容易,为了让它在边缘情况下工作得不好。 另外,如果你正在创建一个服务器应用程序 - 这将需要服务器已经安装了Excel文档... – Assaf 2010-12-14 18:30:09

+1

用于特技:请,不这样做,我们有足够的应用,使得他们在最奇怪的方式伪造的XLS文件。另一方面,其他建议很好。 – 2010-12-14 18:30:47

1

您不需要对XLS格式进行逆向工程; Microsoft记录了excel文件格式here。由于多年来Excel的发展,这不完全是一个干净的规范。

如果您不介意在您的程序中安装Excel的副本,那么使用OLE自动化将会容易得多。

1

最简单的事情就是创建一个CSV file。如果你有列标题,把它们放在第一行。 CSV文件可以在Excel中本地打开,就像它们是Excel电子表格一样。

+0

今天下午就和它一起战斗。虽然它很容易生成,但如果您除了美国地区的设置之外还有其他任何内容,请在Excel中轻松导入CSV文件。 – 2010-12-14 18:28:46

+0

@Matteo:啊,我没有意识到这一点。感谢您指出。 – 2010-12-14 18:34:41

+0

@Matteo,你不能在这种情况下使用分号作为分隔符吗?这在过去对我有效。 – Bart 2010-12-14 18:45:11

相关问题