【问题标题】:How to remove a column from excel sheet in epplus如何从epplus中的excel表中删除一列
【发布时间】:2015-02-06 05:31:44
【问题描述】:

我正在使用 csharp 将数据插入到 Excel 工作表中,分为 7 列。该程序的界面将允许用户选择 7 个复选框。如果他们选择全部 7 个,则 spreadhseet 中的所有 7 列都会有数据,如果他们选择一个复选框,那么只有一列会有数据。我有一个 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)

【问题讨论】:

    标签: c# epplus


    【解决方案1】:

    您使用的是 EPPlus 4 吗?他们实现的新 Cell 存储模型添加了执行列插入和删除的能力。所以你现在可以做这样的事情:

    [TestMethod]
    public void DeleteColumn_Test()
    {
        //http://stackoverflow.com/questions/28359165/how-to-remove-a-column-from-excel-sheet-in-epplus
    
        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);
        }
    }
    

    【讨论】:

    • 感谢您的回复。我正在使用 Epplus 3.1.3.0。我将尝试找到一种将其更新到版本 4 的方法,然后尝试您的解决方案。干杯。
    • 适用于 epplus4。
    • @sanmis 酷,很高兴它对你有用。他们在第 4 版中添加了一堆好东西。只需记住将问题标记为已回答即可关闭它。
    • 如果我只想删除某些列而不先添加内容怎么办?
    • @Si8 不确定我是否关注。上面的例子添加了数据,所以实际上有一些东西要删除。 DeleteColumn 函数本身应该可以正常工作。如果我有误解,可以用你的代码发布一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2021-12-16
    相关资源
    最近更新 更多