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