6

我们有一个要求,比如将数据导出到 Xml 格式的 excel 工作表中,比如创建一个新的 XML SpreadSheet 我已经按照这个链接创建了excel xml Spreadsheet。在此链接中,他提到了示例

< ?xml version="1.0"?>
< ?mso-application progid="Excel.Sheet"?>
<workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<documentproperties xmlns="urn:schemas-microsoft-com:office:office">
<author>Author</author>
<lastauthor>LastAuthor</lastauthor>
<created>11-09-2007</created>
<version>12.00</version>
</documentproperties>
<excelworkbook xmlns="urn:schemas-microsoft-com:office:excel">
<protectstructure>False</protectstructure>
<protectwindows>False</protectwindows>
</excelworkbook>
</workbook>

我需要在 c# 项目中定义这种格式,在上面的代码中,我需要获取有关作者的信息,最后一个作者需要从数据库中绑定......

在那个链接中,他没有完全提到创建文档......

如果我想创建一个ExcelXml spread sheet我需要遵循的步骤,我是否需要创建一个将存储在项目中的预定义格式...

我们能够访问开放的 XML sdk,但我没有找到任何用于在 excel 电子表格中创建 xml 格式的示例解决方案,是否可以用 做同样的事情open XML SDK,如果可能的话,请你指出我正确的方向......

任何人有任何想法和任何解决方案会非常感谢我....

提前谢谢了

4

2 回答 2

2

您可以使用 OpenXml SDK 来完成此任务。

直接使用 OpenXml SDK 并不容易,对于简单的应用程序,最好使用包装器。

看看JumboExcel项目(披露:我是作者)。

创建电子表格非常简单,如下所示:

var tempFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".xlsx");
using (var file = new FileStream(tempFileName, FileMode.CreateNew))
{
    OpenXmlBuilder.Write(
        file, 
        new[] {
            new Worksheet(
                "Parameters",
                null,
                new Row(new InlineString("Name"), new InlineString("Value")),
                new Row(new InlineString("Height"), new DecimalCell(123m))
            )
        }
    );
}
Process.Start(tempFileName);

此外,您可以浏览源代码,请参阅Github 页面上的源代码,并查看 DemoTests 以获取更多示例。

于 2016-05-07T10:55:13.970 回答
1

如果模板失败,请尝试从此处获取的以下内容

using System.IO;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

public static void CreateSpreadsheetWorkbook(string filepath)
    {
        // Create a spreadsheet document by supplying the filepath.
        // By default, AutoSave = true, Editable = true, and Type = xlsx.

        SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

        // Add a WorkbookPart to the document.
        WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
        workbookpart.Workbook = new Workbook();

        // Add a WorksheetPart to the WorkbookPart.
        WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
        worksheetPart.Worksheet = new Worksheet(new SheetData());

        // Add Sheets to the Workbook.
        Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());

        // Append a new worksheet and associate it with the workbook.
        Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
        sheets.Append(sheet);

        workbookpart.Workbook.Save();

        // Close the document.
        spreadsheetDocument.Close();
    }

// Called using
CreateSpreadsheetWorkbook("C:\\Test\\Test.xlsx");

编辑:您可以使用以下代码将 xml 转换为 excel:

Workbook workbook = new Workbook(); 
workbook.LoadFromFile(@"../../Data/test.xml"); 
workbook.SaveToFile(@"..\..\result.xlsx", ExcelVersion.Version2010);

如果您想实际创建一个 Office XML 文档,我不确定如何从 xml 文件自动化该过程。看看这个以获得一些指示

于 2013-09-21T07:48:27.683 回答