如何保存List到Excel工作表使用EPPLus
本文关键字:工作 Excel EPPLus string 何保存 保存 List | 更新日期: 2023-09-27 18:11:04
我试图使用EPPlus从List<string>
保存值到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);
}
在示例中,我正在运行bdCleanList.Count()
具有2056个值,Int32.Parse(textBox7.Text)具有500作为值,因此value
在这种情况下获得5,这里的问题是L2, L3…L5没有得救,我不知道为什么。第一个工作表的值保存得很好,但其余的没有,我的代码有什么问题?如何设置活动工作表以保存活动工作表上的值?如何在工作表之间移动?
好吧,经过几天的头痛和大量的时间阅读我的代码一次又一次,并在互联网上找到我找到了解决方案:我的代码是"好",但我没有得到错误,直到我调试它逐行几次。如果你看到这条线worksheet.Cells[i, col].Value = bdCleanList[i];
就是我设置值细胞和它而是 L1 因为i
开始在(i+1)
0
然后我写很好,细胞开始在1和在499年结束,然后 L2 ,因为我不滚动到最后一列,值500年细胞开始和结束在1000年细胞,这是正确的因为i
创建L2此刻是在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++;
}
这就是我想要的。