【发布时间】:2020-10-30 08:32:07
【问题描述】:
我想删除不需要的列到最后一列或列之间没有标题的任何空白列,然后使用 EPPlus 从每一行和每一列的 Excel 工作表中删除格式。
请查看示例进度。
public static class EpPlusExtension
{
public static string[] GetHeaderColumns(this ExcelWorksheet sheet)
{
List<string> columnNames = new List<string>();
foreach (var firstRowCell in sheet.Cells[sheet.Dimension.Start.Row, sheet.Dimension.Start.Column, 1, sheet.Dimension.End.Column])
columnNames.Add(firstRowCell.Text);
return columnNames.ToArray();
}
public static ExcelWorksheet RemoveCellFormatter(this ExcelWorksheet worksheet)
{
try
{
dynamic cellValue = null;
int lastColumnWithHeaderIndex = worksheet.GetHeaderColumns().Count();
for (int i = worksheet.Dimension.Start.Row; i <= worksheet.Dimension.End.Row; i++)
{
for (int j = worksheet.Dimension.Start.Column; j <= lastColumnWithHeaderIndex; j++)
{
if (worksheet.Cells[i, j].Value != null)
{
cellValue = worksheet.Cells[i, j].Value;
worksheet.Cells[i, j].Clear();
worksheet.Cells[i, j].Value = cellValue;
cellValue = null;
}
}
}
return worksheet;
}
catch (Exception ex)
{
_logger.LogError($"Error Message: Exception While clearing formatting from worksheet. |Exception: {ex.Message}");
return worksheet;
}
}
}
提前致谢
【问题讨论】:
-
创建一个循环检查所有标题
for (int i = 1; i <= worksheet.Dimension.End.Column; i++),如果没有则删除列worksheet.DeleteColumn(i); -
即使有标题也会删除列。它需要保留带有标题的列。