gpt4 book ai didi

c# - SpreadsheetGear CopyFromDataTable 单元格格式

转载 作者:行者123 更新时间:2023-12-04 22:05:54 25 4
gpt4 key购买 nike

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

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

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

有什么方法可以清除 UsedRange 之外的任何格式吗?在我写这篇文章时,我意识到这种方法很复杂。但是格式化是强制性的,我想简化维护,只需要存储过程更改和模板更改。我对任何其他可能促进这一点的方法持开放态度。

最佳答案

SetDataFlags .InserCells 枚举选项应允许在仅由您的 DataTable 填充的范围内选择格式。但是,如 documentation 中所述,有确切的要求才能使其正常工作。 :

“指定此标志 [InsertCells] 时,如果未指定 SpreadsheetGear.Data.SetDataFlags.NoColumnHeaders,则必须提供恰好包含两行数据的范围,前面是列标题行。”

“两行数据”应该按照您的需要进行格式化(内部/填充颜色等)。 SpreadsheetGear 附带的 Explorer 示例解决方案(在您的开始菜单/屏幕的 SpreadsheetGear 文件夹中找到)在 Reporting > DataSet to Workbook 下包含一个示例来演示这一点。

更新

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

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

关于c# - SpreadsheetGear CopyFromDataTable 单元格格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22044181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com