【问题标题】:How to delete excel column by header name? [duplicate]如何按标题名称删除excel列? [复制]
【发布时间】:2017-11-09 00:04:37
【问题描述】:

我在做一个 c# windows 应用程序项目。它将读取所有 excel 标题并粘贴到 checkListBox。在checkedListBox的选定项目之后。它将从 excel 中删除列标题和行(例如单击 excel 的标题列并按删除按钮)

你能帮我吗:'(

public void OpenFile()
        {
            Excel excel = new Excel(@"D:\Book2.xlsx", 1);

            for(int i = 0; i <= 4; i++)
            {
               
                label1.Text = "Total : " + i.ToString() + " Column";

                
                label2.Text = excel.ReadCell(0, i);
                checkedListBox1.Items.Insert(i, label2.Text);
            }


      
        }

class Excel
    {
        string path = "";
        _Application excel = new _Excel.Application();
        Workbook wb;
        Worksheet ws;

        public Excel(string path, int Sheet)
        {
            this.path = path;
            wb = excel.Workbooks.Open(path);
            ws = wb.Worksheets[Sheet];
        }

        public string ReadCell(int i, int j)
        {
            i++;
            j++;
            if(ws.Cells[i, j].Value2 != null)
            {
                return ws.Cells[i, j].Value2;
            }
            else
            {
                return "";
            }
        }
    }

【问题讨论】:

  • 各位,这不是自动化问题。

标签: c# excel winforms windows-applications worksheet


【解决方案1】:

您使用的是什么 Excel 框架/库?

您是否尝试过:

using OfficeOpenXml;
...
ws.DeleteColumn(Int32 columnIndex);

您可以将事件处理程序附加到: https://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.itemcheck(v=vs.110).aspx

并使用 CheckBox 的 Tag 属性来传达 Column 索引。

类似:

checkedListBox1.ItemCheck += CheckedListBox1_ItemCheck;

private void CheckedListBox1_ItemCheck(Object sender, ItemCheckEventArgs e) {
CheckBox checkedBox = (CheckBox) sender;
Int32 columnIndex = (Int32) checkedBox.Tag;

ws.DeleteColumn(columnIndex);

}

【讨论】:

  • 我正在使用这个库。使用 Microsoft.Office.Interop.Excel;使用 _Excel = Microsoft.Office.Interop.Excel;你能给我解释一下“ws”吗?
  • 'ws' 是你的工作表 ws;与其调用 Interop.Excel(意味着您必须在运行应用程序的 PC 上安装 Microsoft Excel),不如考虑使用开源库,例如:ClosedXML 或 EPPlus(您可以在 VS 中使用 NuGet 包管理器轻松添加它们)。但是,所有三个选项的 API 应该非常相似。如果你去 EPPlus,我可以 100% 帮助你,因为我经常使用它。 (当您使用 EPPlus 或 ClosedXML 时,您可以在任何操作系统上运行,无需安装 Microsoft Office)
  • 或者等等,你真的想在另一个窗口中打开 Excel 时自动执行它,或者你想编辑文件?如果你在做自动化,那我就没用了,因为没有这种工作的经验。
  • 谢谢兄弟,我选择 EPPlus 作为我的图书馆,你能给我你的电子邮件或其他联系方式吗?再次感谢您的解决方案。很有帮助。
  • goran.grubic et gmail.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 2012-03-01
  • 2018-05-17
  • 2014-08-31
  • 1970-01-01
  • 2016-10-15
相关资源
最近更新 更多