C# 如何保存列表中的值<;字符串>;使用ePlus创建Excel工作表

C# 如何保存列表中的值<;字符串>;使用ePlus创建Excel工作表,c#,.net,.net-4.5,C#,.net,.net 4.5,我正试图使用EPPlus将值从List保存到Excel工作表,因此我编写了以下代码: private void button3_Click(object sender, EventArgs e) { int value = bdCleanList.Count() / Int32.Parse(textBox7.Text); string bases_generadas = System.IO.Path.Combine(AppDomain.Curren

我正试图使用EPPlus将值从
List
保存到Excel工作表,因此我编写了以下代码:

    private void button3_Click(object sender, EventArgs e)
    {
        int value = bdCleanList.Count() / Int32.Parse(textBox7.Text);
        string bases_generadas = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bases_generadas");

        var package = new ExcelPackage();

        package.Workbook.Worksheets.Add("L1");
        ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
        worksheet.Name = "L1";

        int j = 2;
        int col = 1;

        for (int i = 1; i < bdCleanList.Count(); i++)
        {
            if (i%Int32.Parse(textBox7.Text) == 0)
            {
                package.Workbook.Worksheets.Add("L" + j);
                worksheet = package.Workbook.Worksheets[j];
                worksheet.Name = "L" + j;
                j += 1;

                worksheet.Cells[i, col].Value = bdCleanList[i];
            }
            else
            {
                worksheet.Cells[i, col].Value = bdCleanList[i];
            }
        }

        Byte[] bin = package.GetAsByteArray();
        File.WriteAllBytes(System.IO.Path.Combine(bases_generadas, "bases_generadas_" + DateTime.Now.Ticks.ToString() + DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + ".xlsx"), bin);

        MessageBox.Show("Se generaron un total de " + value + " bases y puede encontrarlas en la siguiente ruta: " + System.IO.Path.Combine(bases_generadas, "bases_generadas_" + DateTime.Now.Ticks.ToString() + DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + ".xlsx"), "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
private void按钮3\u单击(对象发送者,事件参数e)
{
int value=bdCleanList.Count()/Int32.Parse(textBox7.Text);
字符串bases\u generadas=System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“bases\u generadas”);
var package=new ExcelPackage();
文件包。工作簿。工作表。添加(“L1”);
Excel工作表=package.Workbook.Worksheets[1];
工作表。Name=“L1”;
int j=2;
int col=1;
对于(int i=1;i

在我运行的示例中,
bdCleanList.Count()。。。L5没有被保存,我不知道为什么。第一个工作表的值保存得很好,但其他工作表的值保存得不好,我的代码中出了什么问题?如何设置活动工作表以在活动工作表上保存值?如何在工作表之间移动?

好吧,经过几天的头痛和长时间的反复阅读我的代码,并在互联网上找到了解决方案:我的代码“很好”,但直到我逐行调试了好几次,我才发现错误。如果您在这一行中看到
工作表.Cells[i,col].Value=bdCleanList[i]
是我为单元格设置值的地方,它只为L1设置值,因为
I
0开始,然后我在
(I+1)
中写入,所有都很好,单元格从1开始,到499结束,然后是L2,因为我没有滚动到列的末尾,值从单元格500开始,到单元格1000结束,这是正确的,因为创建L2时,
i
在500上。这就是问题所在。因此,我将代码更改为:

        int pos = 1;

        for (int i = 0; i < bdCleanList.Count(); i++)
        {
            if ((i + 1) % Int32.Parse(textBox7.Text) == 0)
            {
                package.Workbook.Worksheets.Add("B" + j);
                worksheet = package.Workbook.Worksheets[j];
                worksheet.Name = "B" + j;

                j += 1;
                pos = 1;
            }

            worksheet.Cells[pos, 1].Value = bdCleanList[i];
            pos++;
        }
int pos=1;
对于(int i=0;i

这就是我想要的工作。感谢这里的每一个人,他们都试图帮助我

这是一个糟糕的标题。请阅读我不知道这是否正确,但仅从这一点来看,我认为您现在需要
j.toString()
@SonerGönül更好?@Sayse
j.toString()
在哪里?第一个工作表的值保存得很好,但其余工作表的值保存得不好,这是我的问题。您有
add(“L1”)
,然后在循环中进行搜索,并
add(“L”+J)
,名称相同