如何从 epplus 中的 excel sheet 中删除一列
How to remove a column from excel sheet in epplus
我正在使用 csharp 将数据插入 excel sheet 的 7 列中。该程序的界面将允许用户 select 7 个复选框。如果它们 select 都是 7,那么 spreadhseet 中的所有 7 列都会有数据,如果它们 select 一个复选框,那么只有一列会有数据。我有一个 for 循环,它将检查数据是否存在,如果不存在数据,我想删除 epplus 中的该列。这是之前关于这个话题的讨论
How can I delete a Column of XLSX file with EPPlus in web app
它很旧,所以我只想检查是否有办法做到这一点。
或者,有没有办法将 epplus excel sheet 转换为 microsoft interop excel sheet 并执行一些操作。
目前,我的代码是这样的:
for(int j=1; j <= 9; j++) //looping through columns
{
int flag = 0;
for(int i = 3; i <= 10; i++) // looping through rows
{
if(worksheet.cells[i, j].Text != "")
{
flag ++;
}
}
if (flag == 0)
{
worksheet.column[j].hidden = true; // hiding the columns- want to remove it
}
}
我们可以这样做吗:
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp = worksheet; (where worksheet is epplus worksheet)
您使用的是 EPPlus 4 吗?他们实施的新 Cell 存储模型添加了执行列插入和删除的能力。所以你现在可以做这样的事情:
[TestMethod]
public void DeleteColumn_Test()
{
//
var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
if (existingFile.Exists)
existingFile.Delete();
//Throw in some data
var datatable = new DataTable("tblData");
datatable.Columns.Add(new DataColumn("Col1"));
datatable.Columns.Add(new DataColumn("Col2"));
datatable.Columns.Add(new DataColumn("Col3"));
for (var i = 0; i < 20; i++)
{
var row = datatable.NewRow();
row["Col1"] = "Col1 Row" + i;
row["Col2"] = "Col2 Row" + i;
row["Col3"] = "Col3 Row" + i;
datatable.Rows.Add(row);
}
using (var pack = new ExcelPackage(existingFile))
{
var ws = pack.Workbook.Worksheets.Add("Content");
ws.Cells.LoadFromDataTable(datatable, true);
ws.DeleteColumn(2);
pack.SaveAs(existingFile);
}
}
我正在使用 csharp 将数据插入 excel sheet 的 7 列中。该程序的界面将允许用户 select 7 个复选框。如果它们 select 都是 7,那么 spreadhseet 中的所有 7 列都会有数据,如果它们 select 一个复选框,那么只有一列会有数据。我有一个 for 循环,它将检查数据是否存在,如果不存在数据,我想删除 epplus 中的该列。这是之前关于这个话题的讨论 How can I delete a Column of XLSX file with EPPlus in web app 它很旧,所以我只想检查是否有办法做到这一点。 或者,有没有办法将 epplus excel sheet 转换为 microsoft interop excel sheet 并执行一些操作。
目前,我的代码是这样的:
for(int j=1; j <= 9; j++) //looping through columns
{
int flag = 0;
for(int i = 3; i <= 10; i++) // looping through rows
{
if(worksheet.cells[i, j].Text != "")
{
flag ++;
}
}
if (flag == 0)
{
worksheet.column[j].hidden = true; // hiding the columns- want to remove it
}
}
我们可以这样做吗:
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp = worksheet; (where worksheet is epplus worksheet)
您使用的是 EPPlus 4 吗?他们实施的新 Cell 存储模型添加了执行列插入和删除的能力。所以你现在可以做这样的事情:
[TestMethod]
public void DeleteColumn_Test()
{
//
var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
if (existingFile.Exists)
existingFile.Delete();
//Throw in some data
var datatable = new DataTable("tblData");
datatable.Columns.Add(new DataColumn("Col1"));
datatable.Columns.Add(new DataColumn("Col2"));
datatable.Columns.Add(new DataColumn("Col3"));
for (var i = 0; i < 20; i++)
{
var row = datatable.NewRow();
row["Col1"] = "Col1 Row" + i;
row["Col2"] = "Col2 Row" + i;
row["Col3"] = "Col3 Row" + i;
datatable.Rows.Add(row);
}
using (var pack = new ExcelPackage(existingFile))
{
var ws = pack.Workbook.Worksheets.Add("Content");
ws.Cells.LoadFromDataTable(datatable, true);
ws.DeleteColumn(2);
pack.SaveAs(existingFile);
}
}