C# 如何保存列表中的值<;字符串>;使用ePlus创建Excel工作表
我正试图使用EPPlus将值从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
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更好?@Saysej.toString()
在哪里?第一个工作表的值保存得很好,但其余工作表的值保存得不好,这是我的问题。您有add(“L1”)
,然后在循环中进行搜索,并add(“L”+J)
,名称相同