我们的产品需要将其原生格式(实际上是XML文件)导出到Excel进行查看/编辑。但是,这需要依赖Excel(或Office)本身来构建我们的产品 - 这是我们不想要的。
我们所做的是将数据从我们的原生格式导出到可以在Excel中打开的csv文件。如果用户也选择了打开生成的报告的选项,我们(尝试)启动Excel应用程序打开它(当然,它要求Excel已经存在于客户端系统上)。
大部分数据都是平面记录清单。
有没有更好的格式(甚至更好的方法)来处理这个要求?这是许多产品的常见要求 - 您如何处理?
答案 0 :(得分:2)
Excel版本(2007年和之前的版本)都具有原生XML格式。显然,2007年是XML,默认情况下,早期版本可以保存为XML。 This SO question处理此问题。我猜一点点检查就会知道需要什么。我不知道旧版本是否存在XSD / DTD,但是一点点创意谷歌可能会产生一些东西。
答案 1 :(得分:2)
正如其他人所指出的,生成Excel XML文件相当容易。您可以通过多种方式执行此操作。例如:
答案 2 :(得分:1)
我正在使用ExcelPackage在我的一个项目中创建电子表格。工作得很好,但(至少我正在使用的版本)在样式和计算方面有点受限。
ExcelPackage允许您创建与2k7本机兼容的OOXML文档(.xslx文件),但对于MS的早期版本的Office,您可以download a plugin。
答案 3 :(得分:1)
我们使用客户端的Excel对象(基于COM的代码)或CSV文件(通常在服务器端,但也可以在客户端使用)导出数据。我们允许以简单的html格式从网格中复制数据,可以毫无问题地粘贴到Excel中。 对于一个客户,我们甚至不得不将数据[从sql存储过程]导出为类似csv的制表符分隔格式,但命名文件如xxxxx.xls - 这样excel以比csv文件更正确的方式打开该文件。丑陋的黑客,但运作良好。
CSV是最兼容的格式(不依赖于外部应用程序或库),但客户不喜欢它。也许我们需要合并一些XLS导出代码,这样所有用户都会很高兴:)
答案 4 :(得分:1)
如果.csv格式不够,您可以在Excel中创建模板,并使用一些VBA代码导入CSV并对其进行适当格式化。这样,您的应用只关注生成.CSV,并且每次导出都会使用相同的.XLS。
如果您小心,您应该能够无缝地使用它与大多数版本的Excel一起使用。
答案 5 :(得分:0)
如果您使用的是Java,请从APACHE查看POI项目。 http://poi.apache.org/
简单,漂亮,完整,强大。
答案 6 :(得分:0)
我们在服务器上开始使用Office,但这不是很好。我们不得不杀死挂起的进程,并且有很多性能下降。我们考虑过将它放在不同的机器上,但在尝试使用Aspose(商业)之后没有打扰。我们没有大量的并发用户,但文档复杂。使用csv可以更轻松地处理简单的。
答案 7 :(得分:0)
我现在已经将FlexCel Studio用于了几个项目。它功能强大,速度快。 100%托管代码,无依赖关系。听起来你使用“报告”功能,它允许你在Excel中定义一个空的报告模板,然后传递datatable和volia,它填充了你的数据。
答案 8 :(得分:0)
我们使用OleDB和Interop的组合。我们发现Interop速度更快,内存使用更少,但是兼容性问题很难解决,尤其是在使用Office的不同语言安装时。 OleDb的优点是您不需要在客户端计算机上安装Excel。 Interop和OleDb都支持每个工作簿的多张表(表),而csv则无法使用。
答案 9 :(得分:0)
如果您使用的是C#或VB.Net,并且您的数据位于DataSet,DataTable或List<>中,那么您可以使用我的免费“导出到Excel”类。
它使用免费的Microsoft OpenXML 库(因此不需要在您的服务器上安装Excel),并允许您将数据导出为“真实” .xlsx文件只有一行代码,例如:
DataSet ds = CreateSampleData();
CreateExcelFile.CreateExcelDocument(ds, "C:\\Sample.xlsx");
以下页面提供了所有源代码以及一个演示项目,完全免费(和弹出窗口!)
http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm
希望这有帮助!