C# .txt文件到.xlsx文件(600行40列)

C# .txt文件到.xlsx文件(600行40列),c#,excel,text-files,C#,Excel,Text Files,我有一个程序,它将三个文本文件合并成一个文件,并按字母顺序进行排序。我想知道我怎么可能不下载和使用excellibrary(如果可能的话)就把它放到excel电子表格上 下面是我的代码,如果有帮助的话,它将合并所有三个文件 private void button1_Click(object sender, EventArgs e) // merge files button { System.IO.StreamWriter output = new System

我有一个程序,它将三个文本文件合并成一个文件,并按字母顺序进行排序。我想知道我怎么可能不下载和使用excellibrary(如果可能的话)就把它放到excel电子表格上

下面是我的代码,如果有帮助的话,它将合并所有三个文件

    private void button1_Click(object sender, EventArgs e) // merge files button
    {

        System.IO.StreamWriter output = new System.IO.StreamWriter("OUTPUT.txt");

        String[] parts = new String[1000];
        String[] parts2 = new String[1000];

        parts = File.ReadAllLines(textBox1.Text);       //gets filepath from top textbox
        parts2 = File.ReadAllLines(textBox2.Text);      //gets filepath from middle textbox

        String[] head = File.ReadAllLines(headingFileBox.Text); //header file array


        //merging the two files onto one list, there is no need to merge the header file because no math is being
        //computed on it
        var list = new List<String>();
        list.AddRange(parts);
        list.AddRange(parts2);


        //foreach loop to write the header file into the output file
        foreach (string h in head)
        {
            output.WriteLine(h);
        }
        //prints 3 blank lines for spaces
        output.WriteLine();
        output.WriteLine();
        output.WriteLine();


        String[] partsComb = list.ToArray(); // string array that takes in the list
        Array.Sort(partsComb);
        //foreach loop to combine files and sort them by 1st letter
        foreach (string s in partsComb)
        {
            partsComb.Equals(s);
            output.WriteLine(s);
        }
        output.Close();
    }
private void按钮1\u单击(对象发送者,事件参数)//合并文件按钮
{
System.IO.StreamWriter输出=新的System.IO.StreamWriter(“output.txt”);
字符串[]部分=新字符串[1000];
字符串[]parts2=新字符串[1000];
parts=File.ReadAllLines(textBox1.Text);//从顶部文本框获取文件路径
parts2=File.ReadAllLines(textBox2.Text);//从中间文本框获取文件路径
String[]head=File.ReadAllLines(headingFileBox.Text);//头文件数组
//将两个文件合并到一个列表中时,不需要合并头文件,因为不需要进行数学运算
//根据它计算
var list=新列表();
列表。添加范围(零件);
列表.添加范围(第2部分);
//foreach循环将头文件写入输出文件
foreach(头中的字符串h)
{
输出写入线(h);
}
//打印3个空格行
output.WriteLine();
output.WriteLine();
output.WriteLine();
String[]partsComb=list.ToArray();//接受列表的字符串数组
Array.Sort(partsComb);
//foreach循环组合文件并按第一个字母排序
foreach(partsComb中的字符串s)
{
partsComb.Equals(s);
输出。写入线;
}
output.Close();
}

任何帮助都将不胜感激。

您可以查看以CSV格式(逗号分隔值)创建它。Excel自然地打开它并将数据加载到行和单元格中

基本CSV如下所示:

"Bob","Smith","12/1/2012"
"Jane","Doe","5/10/2004"
有些东西是可选的,比如用引号括起来,但如果数据可能包含分隔符,则需要使用引号

如果您对文件没有意见,那么通过字符串操作生成该文件非常简单,并将加载到Excel中。如果您需要特定于excel的格式,并且可以使用XLSX,则可以使用一些XML操作和ZIP库来填充该格式


公平警告,如果选择传统的CSV文件,则必须小心转义逗号和新行。还有一些库也可以处理这个问题。

您可能希望尝试Excel package plus:
它是免费的、轻量级的,并且可以创建xlsx文件。

为什么不使用CSV,而excel的读取效果很好?不幸的是,在不使用任何第三方库的情况下创建.xlsx工作表将需要大量的工作。改为制作一个.csv文件(如下面答案中所建议的)。@只需像处理任何其他TXT文件一样输出即可,但将扩展名改为csv即可。您只需要用逗号分隔列,并可以选择将列数据用引号括起来。该文件有40个不同的列和600行,我是否需要将其全部硬编码以使用CSV格式?@Stock如果您的数据尚未按行和列进行拆分,则您需要执行与Excel相同的操作。为每行创建一个数组以容纳列,然后将该数组添加到行数组中。一旦你有了这些,你需要构建两个for循环来输出文本。有趣的是,我对编程和C#相当陌生,但是我的代码不是在顶部将行放入数组吗?我已经为每一列创建了一个数组,但不知道如何在代码中实现它。@Stock您有行,但我没有看到列。祝你好运应该有很多关于创建简单CSV文件的教程。它是为C#设计的;我在VS 2012中使用过一点