【问题标题】:Export multiple listbox to excel or txt将多个列表框导出到 excel 或 txt
【发布时间】:2013-10-23 08:58:46
【问题描述】:

我有 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.");

【问题讨论】:

  • 您好,欢迎来到 SO!请阅读FAQ,了解如何提出一个好问题。同时,您可以向我们提供一些代码,显示您迄今为止尝试过的内容,因为我们也希望看到一些代码。
  • 请先试试!然后让我们知道您在哪里遇到困难,以便其他人可以提供帮助!
  • 对不起,我的第一个糟糕的帖子。问题已解决(我编辑了第一篇文章)。

标签: c# .net winforms excel csv


【解决方案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());

【讨论】:

  • 谢谢。我在这段代码中苦苦挣扎。编辑了我的第一篇文章,以展示我的结局。但是谢谢大家,这个社区的回复真的很快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2023-03-21
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2012-07-30
相关资源
最近更新 更多