ClosedXML 可以从合并单元格创建格式化表格吗?

问题描述 投票:0回答:2

基于以下文档示例:https://github.com/ClosedXML/ClosedXML/wiki/Using-Tables

在 C# 应用程序中,我使用 ClosedXML 创建包含新内容的工作簿。部分内容是我想将其设置为表格样式的一系列单元格。但是,表的第一个“列”实际上跨越多个单元格列。在不应用任何表格格式的情况下,结果类似于以下简化的代码片段。

在我的 C# 应用程序中,填充该表的单元格后,我抓取这些单元格的范围并从中创建一个

IXLTable

IXLWorkbook book = ...;
IXLWorksheet sheet = ...;

//------------------------------
// Populate cells with milestone data.
...

//------------------------------
// Create a table.
IXLRange range = sheet.Range( "A1:D3");
IXLTable table = range.CreateTable();

//------------------------------
// Done.
book.SaveAs( "foo.xlsx" );

只要 C# 应用程序编译、执行并生成工作簿文件,就可以了。

但是,当我在 Microsoft Excel 中打开该工作簿时,Excel 判定存在错误并提示我是否修复该工作簿。 Excel 通过删除工作簿中的任何

<table>
来修复工作簿。

相反,如果表格的第一个“列”仅跨越一个单元格列,则创建的表格没有错误并且可以在 Excel 中加载。结果就像下面的简化片段。

因此,根本问题是表格包含合并单元格。

有什么方法可以实现我想要的,其中一个表“列”由跨越多个单元格列的合并单元格组成?

c# excel formatting closedxml
2个回答
0
投票
IXLRange range = sheet.Range( "A1:D3");
range.Range(startRow, startColumn, startRow, endColumn).Merge();

0
投票

我有一个现有的 Excel 文件,其中包含现有选项卡和格式表,但是当我写入数据时,格式表没有更新新范围。

在将新数据写入工作表之前我用这段代码解决了这个问题。

var table = ws.Tables.FirstOrDefault(); if (table != null) { // Resize the table to include the new data range table.InsertRowsBelow(DataItemsToWriteList.Count - 1); //-1 Because of the Header }
    
© www.soinside.com 2019 - 2024. All rights reserved.