微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何从epplus中的excel表中删除列

我正在使用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表格转换为microsoft interop excel表格并执行一些操作.

目前,我的代码如下:

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()
{
    //https://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);
    }
}

原文地址:https://www.jb51.cc/csharp/243907.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐