0

1つのリストビューからc#を使用してExcelファイルをエクスポートするこのコードがあります。私の問題は、1 つの Excel ファイルで生成される 2 つのリストビューがある場合です。私の計画は、listview1 がシート 1 用であり、listview2 がシート 2 用です。

これは私のコードが listview1 を生成して sheet1 に変換します:

string[] st = new string[listView1.Columns.Count];
DirectoryInfo di = new DirectoryInfo(Environment.ExpandEnvironmentVariables("%USERPROFILE%") + @"\Desktop\");
if (di.Exists == false)
    di.Create();
fileName f = new fileName();
if (f.ShowDialog() == DialogResult.OK)
{
    StreamWriter sw = new StreamWriter(Environment.ExpandEnvironmentVariables("%USERPROFILE%") + @"\Desktop\" + f.Filenam + ".xls", false);
    sw.AutoFlush = true;
    string header = "";
    for (int col = 0; col < listView1.Columns.Count; col++)
    {
        header += listView1.Columns[col].Text.ToString() + "\t";
    }
    sw.Write(header);
    int rowIndex = 1;
    int row = 0;
    string st1 = "";
    for (row = 0; row < listView1.Items.Count; row++)
    {
        if (rowIndex <= listView1.Items.Count)
            rowIndex++;

        st1 = "\n";

        for (int col = 0; col < listView1.Columns.Count; col++)
        {
            st1 = st1 + listView1.Items[row].SubItems[col].Text.ToString() + "\t";
        }
        sw.Write(st1);
    }
    sw.Close();
    FileInfo fil = new FileInfo(Environment.ExpandEnvironmentVariables("%USERPROFILE%") + @"\Desktop\" + f.Filenam + ".xls");
    if (fil.Exists == true)
        MessageBox.Show("Process Completed", "Export to Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
4

3 に答える 3

3

無料のEPPlusを使用しましたが、パフォーマンスが向上し、多くの Excel 機能が提供されます。探すことができる他のオプションは、Microsoft InterOp for Excel エクスポートですが、パフォーマンスの問題があります。

于 2013-07-26T14:18:00.873 に答える
0

以前にClosedXMLを使用したことがあります。構文は非常にクリーンでシンプルであり、この種のタスクはわずか数行で完了できます。

このブロックは、リストを新しいシートに追加して保存する方法を示します

List<string> list = new List<string>();
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell(1, 1).Value = list;
workbook.SaveAs("HelloWorld.xlsx");
于 2013-07-26T14:51:40.047 に答える