我刚开始研究使用SpreadsheetGear的项目。 CopyFromDataTable用于从数据库中获取所有数据。有很多领域可以使用;我们正在格式化它们,如果它们是空的则隐藏某些范围等。例如:
SpreadsheetGear.IRange cells = worksheet.Cells;
cells["G1"].EntireColumn.NumberFormat = "m/d/yyyy";
因此,如果列重新排列或删除了一列,则显示我必须返回并调整所有硬编码值以反映单元格移位。是否有任何方法可以通过其第一个单元格的名称来引用该列,从而可能使模块更加模块化?
我找到this,但仍需要对列进行硬编码。
答案 0 :(得分:1)
电子表格的一个很好的选择是http://officehelper.codeplex.com。使用此库,您可以创建一个模板xlsx,您可以在其中执行所有格式化,然后您可以使用此“模板”文档中的部分来创建最终的,报告的xlsx文件,而不需要以编程方式设置数字格式,例如在你的例子中。
答案 1 :(得分:0)
一种可能性是搜索标题/字段名
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