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

1つの可能性は、見出し/フィールド名を検索することです

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 に答える