代码之家  ›  专栏  ›  技术社区  ›  Ather

如何最好地将本机数据导出到Excel而不引入对Office的依赖?

  •  3
  • Ather  · 技术社区  · 16 年前

    我们所做的是将数据从本机格式导出到可以在Excel中打开的csv文件。如果用户选择一个选项来打开生成的报告,我们(尝试)启动Excel应用程序来打开它(当然,它要求Excel已经存在于客户端系统中)。

    10 回复  |  直到 16 年前
        1
  •  2
  •   Community dbr    7 年前

    Excel版本,包括2007年和以前的几个版本,都有原生XML格式。显然,2007在默认情况下是XML,早期版本可以另存为XML。 This SO question 处理这个问题。我想稍微检查一下就知道需要什么了。我不知道旧版本是否存在XSD/DTD,但一点创造性的谷歌搜索可能会产生一些效果。

        2
  •  2
  •   user8032    16 年前

    1. 通过创建模板Excel XML文档,然后使用XML DOM将数据填充到模板中,或者
    2. 将模板Excel XML转换为XSLT,然后将专有XML作为输入传递给XSLT。
        3
  •  1
  •   user1228 user1228    16 年前

    我正在使用 ExcelPackage

    ExcelPackage允许您创建与2k7本机兼容的OOXML文档(.xslx文件),但您可以 download a plugin 对于MS提供的Office早期版本。

        4
  •  1
  •   Arvo    16 年前

    我们在客户端使用Excel对象(基于COM的代码)或CSV文件(通常在服务器端,但也可以在客户端使用)导出数据。我们允许以简单的html格式从网格复制数据,这些数据可以毫无问题地粘贴到Excel中。 对于一个客户,我们甚至必须将数据[从sql存储过程]导出为类似csv的制表符分隔格式,但命名为类似xxxxx.xls的文件-这样excel以比csv文件更正确的方式打开该文件。丑陋的黑客,但工作得很好。

    CSV是最兼容的格式(不依赖于外部应用程序或库),但客户不喜欢它。也许我们需要加入一些XLS导出代码,这样所有用户都会很高兴:)

        5
  •  1
  •   Tony Arkles    16 年前

    如果.csv的格式不够,您可以在Excel中创建一个模板,并使用一点VBA代码导入csv并对其进行适当的格式设置。这样,您的应用程序只需要生成.CSV,并且每次导出都将使用相同的.XLS。

    如果您很小心,您应该能够让它无缝地与大多数版本的Excel配合使用。

        6
  •  0
  •   GermanDZ GermanDZ    16 年前

    如果您使用Java,请从APACHE签出POI项目。 http://poi.apache.org/

    简单、漂亮、完整、强大。

        7
  •  0
  •   Stephan Eggermont    16 年前

    我们从服务器上的Office开始,但这不是很好。我们必须终止挂起的进程,并且性能有相当大的下降。我们想把它放在另一台机器上,但在尝试并使用Aspose(商业版)后,我们没有费心。我们没有太多的同时用户,但是有复杂的文档。使用csv可以更轻松地处理简单的问题。

        8
  •  0
  •   matt eisenberg    16 年前

    我已经使用FlexCel Studio进行了几个项目。它功能强大,速度快。100%托管代码,无依赖项。听起来您应该使用“报告”功能,它允许您在Excel中定义一个空的报告模板,然后传递datatable和volia,它将填充您的数据。

    TMS Software

        9
  •  0
  •   Kim    13 年前

    我们结合使用OleDB和互操作。我们发现互操作速度更快,占用的内存更少,但兼容性问题让人头疼,尤其是在使用不同语言安装的Office时。 OleDb的优点是不需要在客户端计算机上安装Excel。Interop和OleDb都支持每个工作簿有多个工作表(表),而csv则无法做到这一点。

        10
  •  0
  •   Mike Gledhill    11 年前

    它使用免费的微软软件 OpenXML 需要在服务器上安装Excel),并且只需一行代码即可将数据导出到“real”.xlsx文件中,例如:

    DataSet ds = CreateSampleData();
    CreateExcelFile.CreateExcelDocument(ds, "C:\\Sample.xlsx");
    

    http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

    希望这有帮助!