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