SpreadsheetGear按名称获取列?

我刚刚开始使用SpreadsheetGear的项目。 CopyFromDataTable用于从数据库获取所有数据。 有很多领域可以使用; 我们正在格式化它们,隐藏某些范围,如果它们是空的等等。举个例子:

SpreadsheetGear.IRange cells = worksheet.Cells; cells["G1"].EntireColumn.NumberFormat = "m/d/yyyy"; 

所以,如果列重新排列或删除一列,似乎我必须回去调整所有的硬编码值,以反映细胞的转变。 有没有什么办法通过第一个单元格的名字来引用这个列,从而可能使事物更加模块化?

我发现这一点 ,但它仍然需要硬编码列。

一种可能性是search标题/字段名称

 Sub test() Dim strFieldName As String Dim rngHeading As Range With Sheet1 strFieldName = "Heading 3" 'find Heading Name With .Rows("1:1") 'search row 1 headings Set rngHeading = .Find(What:=strFieldName, LookIn:=xlValues, lookAt:=xlWhole, _ SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) 'check if found If Not rngHeading Is Nothing Then MsgBox rngHeading.Address MsgBox rngHeading.Row MsgBox rngHeading.Column rngHeading.EntireColumn.NumberFormat = "m/d/yyyy" End If End With End With End Sub 

http://officehelper.codeplex.com是电子表格的一个很好的select。 使用这个库你可以创build一个模板xlsx,在那里你做所有的格式化,然后你可以使用这个“模板”文件中的部分来创build你的最终的,被报告的xlsx文件,而不需要编程设置数字格式,就像在你的例子。