Excel使用CSV C自动调整#

时间:2015-01-08 07:06:16

标签: c# excel csv

这是我只想知道如何自动适应的代码我试试    Excel.Rows.AutoFit但告诉我错误和这个Excel.Columns.AutoFit

private void exportToExcelToolStripMenuItem_Click(object sender, EventArgs e)
    {
        SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Excel Documents (*.xls)|*.xls";
        sfd.FileName = "export.xls";
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            //ToCsV(dataGridView1, @"c:\export.xls");
            ToCsV(dataGridView1, sfd.FileName); 
        }  
    }
    private void ToCsV(DataGridView dGV, string filename)
    {

        string stOutput = "";
        string sHeaders = "";

        for (int j = 0; j < dGV.Columns.Count; j++)
            sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t";
        stOutput += sHeaders + "\r\n";


        for (int i = 0; i < dGV.RowCount - 1; i++)
        {
            string stLine = "";
            for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
                stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t";
            stOutput += stLine + "\r\n";
        }

        Encoding utf16 = Encoding.GetEncoding(1254);
        byte[] output = utf16.GetBytes(stOutput);
        FileStream fs = new FileStream(filename, FileMode.Create);
        BinaryWriter bw = new BinaryWriter(fs);
        bw.Write(output, 0, output.Length); 
        bw.Flush();
        bw.Close();
        fs.Close();
    }

请帮我自动填写专栏谢谢!

2 个答案:

答案 0 :(得分:0)

从我所看到的,您并没有真正以XLS格式保存数据,但生成的文件将具有xls扩展名。难怪当您打开文件时Excel是否显示警告,因为它检测到格式错误。 因为该文件只是文本,它不存储有关数据格式,列宽,字体样式等的信息。

如果你真的需要格式化,你可以使用你提到的Microsoft.Office.Interop.Excel`或像EPPlus这样的其他库来创建真正的xls(x)文件。

答案 1 :(得分:0)

具有XLS扩展名的CSV文件不是真正的Excel文件。它只是一个CSV,MS Excel知道打开CSV并在工作表中显示其数据。 XLS文件是二进制文件,而不是像CSV这样的文本文件。

要创建真正的XLS文件,您可以使用像EasyXLS这样的Excel库,更具体地说,可以使用所有Excel库中的C# Excel library

要将DataGridView导出到Excel,请选中此code sample。行和列将自动适合内容。