C# 用C语言编写Excel#

C# 用C语言编写Excel#,c#,excel,oledb,C#,Excel,Oledb,这可能是一个非常幼稚的问题。 我想写进一个excel文件,每次插入数据都应该在新行上进行。 以下是我必须详细做的事情: 动态创建Excel并根据 当前日期 添加标题,如“实际”、“预期”和“结果” 在上述列中插入日期 我有一个验证某些字段的小代码,所以我想将偏离预期行为的字段写入excel。因此,每当我的代码发现错误时,每次运行都应该写入excel。您可以使用以下方法写入excel文件: 使用Excel应用程序的COM实例 使用第三方组件编写excel 我使用syncfusion xslIo组件

这可能是一个非常幼稚的问题。 我想写进一个excel文件,每次插入数据都应该在新行上进行。 以下是我必须详细做的事情:

  • 动态创建Excel并根据 当前日期
  • 添加标题,如“实际”、“预期”和“结果”
  • 在上述列中插入日期

  • 我有一个验证某些字段的小代码,所以我想将偏离预期行为的字段写入excel。因此,每当我的代码发现错误时,每次运行都应该写入excel。

    您可以使用以下方法写入excel文件:

  • 使用Excel应用程序的COM实例
  • 使用第三方组件编写excel

  • 我使用syncfusion xslIo组件读取和写入excel文件

    您可以使用以下方法写入excel文件:

  • 使用Excel应用程序的COM实例
  • 使用第三方组件编写excel
  • 我使用syncfusion xslIo组件读取和写入excel文件

    您可能希望使用它作为OpenXMLSDK的包装器。看看他们的例子

    如果您不想依赖第三方库,您可以直接使用。

    您应该使用它作为OpenXMLSDK的包装器。看看他们的例子


    如果您不想依赖第三方库,可以直接使用。

    通过使用excel电子表格XML格式,无需使用任何第三方库即可写入excel文件。您所需要的只是使用XmlTextWriter。下面是一个示例(假设提供了编写excel的流):


    通过使用excel电子表格XML格式,可以在不使用任何第三方库的情况下写入excel文件。您所需要的只是使用XmlTextWriter。下面是一个示例(假设提供了编写excel的流):


    不过ClosedXML确实有一些讨厌的bug。我找到的包括:1-打开excel文件时,设置单元格的颜色,然后保存;这可能会导致任何新的excel文件将其默认颜色设置为除白色以外的任何颜色。2-在单元格中写入“Hello\nWorld”时,会自动调整行大小,但不会自动调整,因此只能看到“Hello”;但在编写“Hello\r\nWorld”时,它确实有效。3-即使您调用
    sheet.AddToNamed
    sheet.NamedRanges
    仍将保持为空,因此您需要使用
    sheet.WorkBook.NamedRanges
    来检索NamedRanges(奇数,对吗?)。@Nolonar:我建议使用封闭XML,因为它很容易启动和运行。另一种选择是编写开放式XML代码,它具有更高的学习曲线,并且需要相当多的编码。我知道,我也对这个答案投了赞成票。我只是觉得有必要提一下,以防OP遇到这些bug,不知道如何处理它们。如果您觉得我的评论令人不安,我可以删除它。@Nolonar:不需要删除。很高兴知道你在做什么。我认为我们应该能够编写一些简单的代码,而不是使用第三方的东西。不过ClosedXML确实有一些讨厌的bug。我找到的包括:1-打开excel文件时,设置单元格的颜色,然后保存;这可能会导致任何新的excel文件将其默认颜色设置为除白色以外的任何颜色。2-在单元格中写入“Hello\nWorld”时,会自动调整行大小,但不会自动调整,因此只能看到“Hello”;但在编写“Hello\r\nWorld”时,它确实有效。3-即使您调用
    sheet.AddToNamed
    sheet.NamedRanges
    仍将保持为空,因此您需要使用
    sheet.WorkBook.NamedRanges
    来检索NamedRanges(奇数,对吗?)。@Nolonar:我建议使用封闭XML,因为它很容易启动和运行。另一种选择是编写开放式XML代码,它具有更高的学习曲线,并且需要相当多的编码。我知道,我也对这个答案投了赞成票。我只是觉得有必要提一下,以防OP遇到这些bug,不知道如何处理它们。如果您觉得我的评论令人不安,我可以删除它。@Nolonar:不需要删除。很高兴知道你在做什么。我认为我们应该能够编写一些简单的代码,而不是使用第三方的东西。
    XmlTextWriter w = new XmlTextWriter(stream, null); // Creates the XML writer from pre-declared stream.
    
    //First Write the Excel Header
    w.WriteStartDocument();
    w.WriteProcessingInstruction("mso-application", "progid='Excel.Sheet'");
    
    w.WriteStartElement("Workbook");
    w.WriteAttributeString("xmlns", "urn:schemas-microsoft-com:office:spreadsheet");
    w.WriteAttributeString("xmlns", "o", null, "urn:schemas-microsoft-com:office:office");
    w.WriteAttributeString("xmlns", "x", null, "urn:schemas-microsoft-com:office:excel");
    w.WriteAttributeString("xmlns", "ss", null, "urn:schemas-microsoft-com:office:spreadsheet");
    w.WriteAttributeString("xmlns", "html", null, "http://www.w3.org/TR/REC-html40");
    
    w.WriteStartElement("DocumentProperties");
    w.WriteAttributeString("xmlns", "urn:schemas-microsoft-com:office:office");
    w.WriteEndElement();
    
    // Creates the workbook
    w.WriteStartElement("ExcelWorkbook");
    w.WriteAttributeString("xmlns", "urn:schemas-microsoft-com:office:excel");
    w.WriteEndElement();
    
    // Creates the worksheet
    w.WriteStartElement("Worksheet");
    w.WriteAttributeString("ss", "Name", null, "Sheet1");
    
    // Creates the table
    w.WriteStartElement("Table");
    
    // Creates a row.
    w.WriteStartElement("Row");
    
    // Creates a cell with "SomeData" written in it.
    w.WriteStartElement("Cell");
    w.WriteStartElement("Data");
    w.WriteAttributeString("ss", "Type", null, "String");
    w.WriteString("SomeData");
    w.WriteEndElement();
    w.WriteEndElement();
    
    w.WriteEndElement(); // Closes the row.
    
    w.WriteEndElement();
    w.WriteEndElement();
    w.WriteEndElement();
    w.WriteEndDocument();
    w.Flush();
    w.Close();