C#对EXCEL二次开发中,获取当前的EXCEL表名称,将所有信息另存为一个新的EXCEL文件,命名为当前EXCEL表名称+(销售)并删除掉所有信息中的C、F、K列,的全部代码
时间: 2024-11-03 22:20:19 浏览: 19
C# 对Excel文件进行读取,显示,另存为
在C#中使用`Microsoft.Office.Interop.Excel`库对Excel进行二次开发,你可以通过以下步骤完成你描述的任务:
首先,确保已安装`Microsoft.Office.Interop.Excel`NuGet包。然后,可以使用以下代码片段:
```csharp
using Microsoft.Office.Interop.Excel;
// 创建Excel应用程序实例
Application excelApp = new Application();
Workbook workbook = null;
Worksheet worksheet = null;
try
{
// 打开现有Excel工作簿
workbook = excelApp.Workbooks.Open("原文件路径.xlsx");
// 获取活动工作表
worksheet = workbook.ActiveSheet;
// 获取当前工作表的名称
string currentSheetName = worksheet.Name;
// 新建一个工作簿用于保存处理后的数据
Workbook newWorkbook = excelApp.Workbooks.Add();
// 另存新工作簿,并设置名称为当前工作表名 + "(销售)"
string newName = currentSheetName + " (销售)";
newWorkbook.SaveAs($"新文件路径\\{newName}.xlsx");
// 切换到新的工作表
Worksheet newWorksheet = newWorkbook.Sheets[newWorkbook.Sheets.Count - 1];
// 删除原始工作表中C、F、K列的数据
for (int i = 1; i <= worksheet.Cells.SpecialCells(xlCellTypeLastCell).Row; i++)
{
Range cellsToHide = newWorksheet.Range["A" + i, "Z" + i]; // 从A到Z,这里假设列宽适中,若不确定,可以根据实际列数调整
cellsToHide.EntireColumn.Hidden = true; // 隐藏列
if (!cellsToHide.Columns.Contains("C") && !cellsToHide.Columns.Contains("F") && !cellsToHide.Columns.Contains("K")) // 检查列是否包含C/F/K
cellsToHide.EntireColumn.Visible = true; // 如果不在,则显示列
}
// 保存并关闭新工作簿
newWorkbook.Close(false); // 关闭时不保存更改
}
catch (Exception ex)
{
Console.WriteLine($"操作Excel过程中遇到错误: {ex.Message}");
}
finally
{
// 清理资源
if (workbook != null) workbook.Close(false);
if (excelApp != null) excelApp.Quit();
}
阅读全文