【问题标题】:OpenXML Excel file corrupted when trying to hide a column尝试隐藏列时 OpenXML Excel 文件损坏
【发布时间】:2021-05-03 03:09:42
【问题描述】:

我一直在努力理解为什么我的 excel 文件会损坏。我试图隐藏某些列(在本例中为 A 列)。使用 OpenXML Productivity Tool,我查看了代码构建,这是输出:

Worksheet worksheet1 = new Worksheet();
Columns columns1 = new Columns();
Column column1 = new Column(){ Min = (UInt32Value)1U, Max = (UInt32Value)1U, Width = 0D, Hidden = true, CustomWidth = true };
columns1.Append(column1);
SheetFormatProperties sheetFormatProperties1 = new SheetFormatProperties(){ DefaultRowHeight = 15D, DyDescent = 0.25D };
SheetData sheetData1 = new SheetData();
Row row1 = new Row(){ RowIndex = (UInt32Value)1U };
Cell cell1 = new Cell(){ CellReference = "A1", DataType = CellValues.String };
CellValue cellValue1 = new CellValue();
cellValue1.Text = "Table Id";
cell1.Append(cellValue1);
Cell cell2 = new Cell(){ CellReference = "B1", DataType = CellValues.String };
CellValue cellValue2 = new CellValue();
cellValue2.Text = "Table";
cell2.Append(cellValue2);
row1.Append(cell1);
row1.Append(cell2);
Row row2 = new Row(){ RowIndex = (UInt32Value)2U };
Cell cell6 = new Cell(){ CellReference = "A2", DataType = CellValues.String };
CellValue cellValue6 = new CellValue();
cellValue6.Text = "1";
cell6.Append(cellValue6);
Cell cell7 = new Cell(){ CellReference = "B2", DataType = CellValues.String };
CellValue cellValue7 = new CellValue();
cellValue7.Text = "Options";
cell7.Append(cellValue7);
row2.Append(cell6);
row2.Append(cell7);
sheetData1.Append(row1);
sheetData1.Append(row2);
worksheet1.Append(columns1);
worksheet1.Append(sheetFormatProperties1);
worksheet1.Append(sheetData1);
part.Worksheet

正如所见,这基本上是一个有两行的示例。 列 A 应该被隐藏,但打开 XML 文件时它似乎已损坏。关于我在这里可能缺少什么的任何想法?我尝试使用微软文档获取特定列的所有单元格的另一种方法 - https://docs.microsoft.com/en-us/office/open-xml/how-to-get-a-column-heading-in-a-spreadsheet 我找不到任何方法来隐藏所有选定的单元格(尝试使用隐藏值的 OpenXMLAttribute,但没有成功。)

【问题讨论】:

    标签: c# excel openxml


    【解决方案1】:

    感谢这篇文章,我能够解决这个问题:
    Creating custom column widths in OpenXML (excel)

    看来我需要在第一个索引的新 Excel 文件中插入我特别隐藏的列。

    【讨论】:

      【解决方案2】:

      你为什么不试试EPPlus

      使用 EPPLus,您可以执行以下操作:

      worksheet.Cells.AutoFitColumns();
      worksheet.Column(1).Hidden = true;
      

      原帖是here

      【讨论】:

      • 我更喜欢继续使用 OpenXML,因为我已经在它上面投入了很多时间。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 2015-10-10
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      相关资源
      最近更新 更多