SpreadsheetGear получить столбец по имени?

Я только начинаю работать над проектом, который использует SpreadsheetGear. CopyFromDataTable используется для получения всех данных из базы данных. Есть много полей для работы; мы их форматируем, скрываем определенные диапазоны, если они пусты, и т. д. Например:

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

Таким образом, если столбцы переставлены или один из них удален, похоже, мне придется вернуться назад и откорректировать все жестко заданные значения, чтобы отразить смещение ячеек. Есть ли способ ссылаться на столбец по имени его первой ячейки, чтобы сделать его более модульным?

Я нашел это, но это все еще требует жесткого кодирования столбца.

2 ответа

Решение

Одна возможность состоит в том, чтобы искать заголовки / имена полей

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/. Используя эту библиотеку, вы можете создать шаблон xlsx, в котором вы выполняете все форматирование, а затем вы можете использовать части из этого "шаблона" документа для создания ваших окончательных файлов xlsx, которые будут сообщаться, без необходимости программно устанавливать формат чисел, например, в вашем примере.

Другие вопросы по тегам