首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OpenXML将Excel2013范围格式化为表

使用OpenXML将Excel2013范围格式化为表
EN

Stack Overflow用户
提问于 2017-02-09 08:54:03
回答 1查看 3.2K关注 0票数 4

最近,我发现自己需要将一个大型的C# DataTable粘贴到Excel中,并且非常兴奋地看到SimpleOOXML (https://simpleooxml.codeplex.com)扩展的WorksheetWriter.PasteDataTable()函数,它正是这样做的。

不幸的是,它并没有像人们所期望的那样自动地将粘贴的DataTable转换为具有自动列宽度和过滤功能的"Format as Table“,而是只允许我指定单独的样式(例如边框、背景色等)。

如果有人知道如何使用SimpleOOXML (我在他们的讨论论坛中找不到相关的东西)来做这件事,那将是令人惊奇的,但是如果这不可能的话,我想知道是否可以使用传统的OpenXML?

编辑

为了澄清,我检查了OpenXML的MSDN文档,但找不到一种方法来执行以下操作:

以编程方式使用OpenXML将特定范围(G7:I9)格式化为一个表,使用样式为“Table style Light 9”的样式,并保留现有的标头。

EN

回答 1

Stack Overflow用户

发布于 2017-02-16 17:02:11

使用表中的简单数据创建一个虚拟Excel文件:

打开开放的xml生产力工具中的Excel文件显示需要创建一个表部件:

代码语言:javascript
运行
复制
 private void GenerateTableDefinitionPart1Content(TableDefinitionPart tableDefinitionPart1)
    {
        Table table1 = new Table(){ Id = (UInt32Value)1U, Name = "Table1", DisplayName = "Table1", Reference = "A1:D2", TotalsRowShown = false };
        AutoFilter autoFilter1 = new AutoFilter(){ Reference = "A1:D2" };

        TableColumns tableColumns1 = new TableColumns(){ Count = (UInt32Value)4U };
        TableColumn tableColumn1 = new TableColumn(){ Id = (UInt32Value)1U, Name = "1" };
        TableColumn tableColumn2 = new TableColumn(){ Id = (UInt32Value)2U, Name = "2" };
        TableColumn tableColumn3 = new TableColumn(){ Id = (UInt32Value)3U, Name = "3" };
        TableColumn tableColumn4 = new TableColumn(){ Id = (UInt32Value)4U, Name = "4" };

        tableColumns1.Append(tableColumn1);
        tableColumns1.Append(tableColumn2);
        tableColumns1.Append(tableColumn3);
        tableColumns1.Append(tableColumn4);
        TableStyleInfo tableStyleInfo1 = new TableStyleInfo(){ Name = "TableStyleLight17", ShowFirstColumn = false, ShowLastColumn = false, ShowRowStripes = true, ShowColumnStripes = false };

        table1.Append(autoFilter1);
        table1.Append(tableColumns1);
        table1.Append(tableStyleInfo1);

        tableDefinitionPart1.Table = table1;
    }

然后叫了main:

代码语言:javascript
运行
复制
            TableDefinitionPart tableDefinitionPart1 =    worksheetPart1.AddNewPart<TableDefinitionPart>("rId1");
            GenerateTableDefinitionPart1Content(tableDefinitionPart1);

若要为表选择正确的样式,请更改TableStyleInfo Name属性:

代码语言:javascript
运行
复制
TableStyleInfo tableStyleInfo1 = new TableStyleInfo(){ Name = "TableStyleLight17", ShowFirstColumn = false, ShowLastColumn = false, ShowRowStripes = true, ShowColumnStripes = false };
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42132047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档