【问题标题】:Saving Excel 2007 documents保存 Excel 2007 文档
【发布时间】:2010-11-15 04:48:35
【问题描述】:

在 .NET C# 中,我尝试打开 Excel 模板,添加一些数据并将其另存为新文档。我正在尝试使用 OpenXML 文档格式。我似乎找不到有关如何执行此操作的任何指导。似乎所有文档都在讨论如何将各个部分写入包,但我找不到任何关于完成并想要保存它时该做什么的信息。

有人知道我在哪里可以找到这些信息吗?我一定是错误地考虑了这一点,因为我没有找到任何有用的东西似乎非常基本。

谢谢

【问题讨论】:

  • SpreadsheetML 不是 OpemXML
  • @Joel - 实际上,SpreadsheetML 被用作 Excel 2007 Open XML 格式以及旧的已弃用 Excel 2003 XML 格式的名称。

标签: c# excel excel-2007 office-2007


【解决方案1】:

访问 Open XML / SpreadsheetML 文档绝非易事。规范庞大而复杂。 “Open XML SDK”(google it)肯定有帮助,但仍然需要一些关于 Open XML 标准的知识才能完成很多工作。

SpreadsheetGear for .NET 具有类似于 Excel 的 API,可以读写 Excel Open XML (xlsx) 文档以及 Excel 97-2003 (xls) 文档。

您可以查看一些 SpreadsheetGear 示例here 并下载免费试用版here

免责声明:我拥有 SpreadsheetGear LLC

【讨论】:

    【解决方案2】:

    ExcelPackage 对此非常有效。我不认为有一段时间,主要作者尚未对其进行研究,但它在其论坛上拥有大量追随者,可以解决任何问题。

                FileInfo template = new FileInfo(Path.GetDirectoryName(Application.ExecutablePath)+"\\Template.xlsx");
            try
            {
                using (ExcelPackage xlPackage = new ExcelPackage(strFileName,template))
                {
                    //Enable DEBUG mode to create the xl folder (equlivant to expanding a xlsx.zip file)
                    //xlPackage.DebugMode = true;
    
                    ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sheet1"];
    
                    worksheet.Name = WorkSheetName;
    
                    foreach (DataRow row in dt.Rows)
                    {
                        int c = 1;
                        if (r > startRow) worksheet.InsertRow(r);
                        // our query has the columns in the right order, so simply
                        // iterate through the columns
                        foreach (DataColumn col in dt.Columns)
                        {
                            if (row[col].ToString() != null)
                            {
                                worksheet.Cell(r, c).Value = colValue;
                                worksheet.Column(c).Width = 10;
                            }
                            c++;
                        }
                        r++;
                    }
    
                    // change the sheet view to show it in page layout mode
                    worksheet.View.PageLayoutView = false;
    
                    // save our new workbook and we are done!
                    xlPackage.Save();
                    xlPackage.Dispose();
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      相关资源
      最近更新 更多