1

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

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

因此,如果列被重新排列或被删除,看来我必须返回并调整所有硬编码值以反映单元格移位。有没有办法通过第一个单元格的名称来引用该列,以使事情变得更加模块化?

我找到了这个,但它仍然需要对列进行硬编码。

4

2 回答 2

1

电子表格设备的一个很好的替代品是http://officehelper.codeplex.com。使用这个库,您可以创建一个模板 xlsx,您可以在其中进行所有格式化,然后您可以使用此“模板”文档中的部分来创建最终的、要报告的 xlsx 文件,而无需以编程方式设置数字格式,例如在你的例子中。

于 2012-01-24T10:13:53.820 回答
0

One possibility is to search for the heading/fieldnames

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
于 2011-04-22T13:10:10.197 回答