使用C#编写文本数据文件以获得优秀

时间:2010-03-21 17:47:49

标签: c# excel

使用visual studio 2008在C#上新增,并尝试使用文本文件加载excel表。我当前的程序将完整的文件放在一个单元格中。有没有办法将每个数据点放在自己的单元格中。有问题与excel接口以完成此任务。

由于

4 个答案:

答案 0 :(得分:2)

Microsoft Excel 11.0对象库可能对您有所帮助。您必须在项目中添加对它的引用并包含命名空间:

  using Microsoft.Office.Interop.Excel;

看看http://support.microsoft.com/?scid=kb%3Ben-us%3B302096&x=10&y=10。还有更多信息。

答案 1 :(得分:1)

一种简单的方法是将文本文件输出为CSV file (comma separated values)。每行都是一行,每列之间都有逗号。维基百科链接有很好的例子。 Excel可以轻松读取CSV文件。

如果您要做的不仅仅是将数据输入Excel并且需要格式化单元格,那么使用带有C#的Excel互操作是phimuemue建议的方法。

答案 2 :(得分:1)

如上所述,你可以使用一个很好的库来编写excel xml文档。它实际上是您需要的大部分功能的非常好的包装器。此外,如果您在服务器上未安装excel的Web应用程序中执行此操作,则不需要互操作库。

http://www.carlosag.net/Tools/ExcelXmlWriter/

答案 3 :(得分:0)

Microsoft定义了一种与Excel 2002及更高版本兼容的XML电子表格格式。我已经习惯了并且非常满意。在MSDN上有一个gentle introduction和一些nitty-gritty documentation

这是一段简短的代码,说明了如何使用它:

public void WriteExcelDocument(string filename, string[,] values)
{
    using (var writer = XmlWriter.Create(filename))
    {
        const string ss = "urn:schemas-microsoft-com:office:spreadsheet";

        writer.WriteProcessingInstruction("mso-application", "progid=\"Excel.Sheet\"");
        writer.WriteStartElement("ss", "Workbook", ss);
        writer.WriteStartElement("Worksheet", ss);
        writer.WriteAttributeString("Name", ss, "Sheet1");
        writer.WriteStartElement("Table", ss);

        for (var i = 0; i < values.GetLength(0); i++)
        {
            writer.WriteStartElement("Row", ss);

            for (var j = 0; j < values.GetLength(1); j++)
            {
                writer.WriteStartElement("Cell", ss);
                writer.WriteStartElement("Data", ss);

                // Valid types are: Number, DateTime, Boolean, String, Error.
                // To keep the example simple, I'm just doing strings.
                writer.WriteAttributeString("Type", ss, "String");

                // If the cell contains a boolean, be sure to write "0" or "1" here, not
                // "false" or "true".  Again, I'm just doing strings, so it doesn't matter.
                writer.WriteString(values[i, j]);

                writer.WriteEndElement();
                writer.WriteEndElement();
            }

            writer.WriteEndElement();
        }

        writer.WriteEndElement();
        writer.WriteEndElement();
        writer.WriteEndElement();
    }
}

随意使用此代码并使用它或根据需要修改它。我是在麻省理工学院许可下发布的。这只是一个起点;您可以修改它以处理不同的数据类型,列宽,样式,多个工作表等。