0

我有 5 个listboxes,我想将这 5 个 lisboxes 的内容导出到 excel。我希望这些列表框显示在 5 列中。Listbox1[0]应该与listbox2[0]等(listbox3[0]、listbox4[0]、listbox5[0])在同一行。

我尝试将所有项目从列表框复制到 datagridview,然后导出到 Excel,但我只能选择一个数据源,我没有找到将所有 5 个列表框项目复制到 datagridview 中的 5 列的方法。

编辑:

我用这段代码解决了(感谢我的朋友)。刚刚创建了一个数据表,将列表项导入其中并将数据导出到 csv。

    //create datatable
    DataTable dt = new DataTable();
    //create datatable columns
    dt.Columns.Add("title++", typeof(string));
    dt.Columns.Add("title",typeof(string));
    dt.Columns.Add("season_name", typeof(string));
    dt.Columns.Add("episode_name", typeof(string));
    int rowCount = listBox1.Items.Count;

    //insert lists items into datatable columns
    for (int i = 0; i < rowCount; i++)
    {
        DataRow row = dt.NewRow();
        row["title++"] = listBox1.Items[i].ToString();
        row["title"] = listBox5.Items[i].ToString();
        row["season_name"] = listBox3.Items[i].ToString();
        row["episode_name"] = (listBox4.Items[i].ToString() + (" ") + listBox2.Items[i].ToString());

        dt.Rows.Add(row);
    }
    CreateCSVFile(dt, "output.csv");
    MessageBox.Show("Data exported.");
4

1 回答 1

1

您可以使用以下代码将逗号分隔值写入文本文件:

List<ListBox> listBoxes = new List<ListBox>();

foreach (Control c in Controls)
    if (c is ListBox)
        listBoxes.Add(c as ListBox);

int maxLineCount = listBoxes.Max(lb => lb.Items.Count);

StringBuilder sb = new StringBuilder();

for (int rowIndex = 0; rowIndex < maxLineCount; rowIndex++)
{                
    for (int columnIndex = 0; columnIndex < listBoxes.Count; columnIndex++)
    {
        if (listBoxes[columnIndex].Items.Count > rowIndex)
            sb.Append(listBoxes[columnIndex].Items[rowIndex]);

        sb.Append(", ");
    }

    sb.AppendLine();
}

File.WriteAllText("c:\\mytext.txt", sb.ToString());
于 2013-10-23T09:31:48.817 回答