首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SpreadsheetGear CopyFromDataTable单元格格式

SpreadsheetGear CopyFromDataTable单元格格式
EN

Stack Overflow用户
提问于 2014-02-26 14:20:25
回答 2查看 3.7K关注 0票数 1

我试图使用DataTable将数据从SpreadsheetGear导出到Excel文件中。Excel文件中的工作表将从带有列标题和特定格式的模板中复制。为了便于维护(更改存储的proc和模板以更改报表内容,而不是重新部署服务),我不想在代码中执行特定的列格式设置,即列填充颜色。

我使用SpreadsheetGear的CopyFromDataTable进行导出。但是,InsertCells标志并不会导致数据采用其插入的行的格式(列填充颜色)作为说明说明(“这允许预先格式化单元格”)。

为此,我不使用InsertCells标志,而只是设置模板中整个列的填充颜色。但是,这会导致整个列被着色,包括超出使用的范围。我想将格式限制在使用的范围内。

是否有办法清除UsedRange之外的任何格式?当我写这篇文章的时候,我意识到这个方法是复杂的。但是格式化是强制性的,我希望简化维护,使之只需要存储的proc更改和模板更改。我对任何其他方法都持开放态度

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-27 23:18:35

SetDataFlags.InserCells枚举选项应允许在仅由DataTable填充的范围内获取格式。但是,正如文档中所述,要使这一工作正常进行,有确切的要求:

“当指定此标志InsertCells时,必须为数据提供两个行的范围,如果未指定InsertCells,则在前面为列标题提供一行。”

“数据的两行”应该被格式化,不管你需要什么(内部/填充颜色,等等)。SpreadsheetGear附带的资源管理器示例解决方案(在开始菜单/屏幕中的SpreadsheetGear文件夹中找到)包含一个示例,在Reporting > DataSet to Workbook下面演示了这一点。

更新

下面是一个示例,演示如何结合使用InsertCells标志和NoColumnHeaders。此代码假设您已经设置了一个带有格式化范围的worksheet,并且您可以获得一个DataTable,其大小与您格式化范围中的列数相对应。

代码语言:javascript
运行
复制
using SpreadsheetGear;
using SpreadsheetGear.Data;

// Generate DataTable.  For this example, let's say it is 5 columns wide and 
// 10 rows deep...
DataTable dataTable = // ...get DataTable...

// We're not interested in a "Column Header" row, so for the above dataTable, 
// an IRange 5 columns wide and 2 rows deep needs to be specified where those
// two rows are already setup with the desired formatting.  In this case B2:F3
// are formatted accordingly.
worksheet.Cells["B2:F3"].CopyFromDataTable(dataTable, SetDataFlags.InsertCells |
    SetDataFlags.NoColumnHeaders);

// Sheet should how have B2:F11 populated with your dataTable data, with all
// rows having picked up the formatting as originally specified in B2:F3
票数 2
EN

Stack Overflow用户

发布于 2014-02-28 01:12:01

我有两个建议

1)不太优雅,但您可以在Excel模板中使用条件格式,以获取希望填充电子表格的最大行数。如果单元格不是空白的,或者同一行中的其他引用单元符合定义的条件,则应该能够切换所需的格式。

2)使用Datatable.Rows.Count计算C#数据表中的行数,然后根据该信息构造一个C#单元格范围定义。粘贴到表中后,将所需的格式应用于目标单元格范围(抱歉,没有时间进行代码示例)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22044181

复制
相关文章

相似问题

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