← →
cad2206
(2004-09-08 15:44)
[0]
Подскажите, как?
Строка типа ExcelWorksheet.Rows.Height:=67 вызывает ошибку:
cannot assign to a resd-only property
← →
Антоныч
(2004-09-08 15:56)
[1]
Высота и ширина ячейки
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
column:variant;width:real):boolean;
begin
SetColumnWidth:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Columns
[column].ColumnWidth:=width;
except
SetColumnWidth:=false;
end;
End;
Для определения ширины столбца используйте следующий оператор: width:=ExcelApplication.ActiveWorkbook .Sheets.Item[sheet].Columns[column].ColumnWidth;
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
height:real):boolean;
begin
SetRowHeight:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight:=height;
except
SetRowHeight:=false;
end;
End;
Для определения высоты строки используйте следующий оператор: height:=ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight;
Есть подробная документация по взаимодействию Delphi с Word и Excel. Могу выслать на мыло.
← →
cad2206
(2004-09-08 16:34)
[2]
Антоныч, эта функция устанавливает размер для всех ячеек на странице, мне нужно отдельно для каждой ячейки…?
← →
BillyJeans
(2004-09-08 17:34)
[3]
а может отдельно для каждой строки???
← →
YurikGL ©
(2004-09-08 21:11)
[4]
http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208
интересное о себе…
← →
DarkMan
(2004-09-09 09:53)
[5]
WorkSeet.Columns[«B:B»].RowHeight := xx;
либо
WS.Range[WS.Cells[xx,yy],ExcWS.Cells[xx,yy]].Select;
ExcApp.Selection.RowHeight = xx;
← →
pavel_guzhanov
(2004-09-09 13:01)
[6]
var m_XLApp, Sheet, Colum, Row:Variant;
begin
m_XLApp:=CreateOleObject(«Excel.Application»); //Запуск Excel
m_XLApp.Visible:=true; //видимый
m_XLApp.Workbooks.Add(-4167); // добавили книгу
m_XLApp.Workbooks[1].Worksheets[1].Name:=»Список сотрудников»;
Sheet:=m_XLApp.Workbooks[1].Worksheets[«Список сотрудников»];
Sheet.PageSetup.Orientation:=xlLandscape;
Colum:=m_XLApp.Workbooks[1].Worksheets[«Список сотрудников»].Columns; //столбцы
Row:=m_XLApp.Workbooks[1].Worksheets[«Список сотрудников»].Rows; //строки
//ширина столбцов
Colum.Columns[1].ColumnWidth:=5;
Colum.Columns[2].ColumnWidth:=16;
Colum.Columns[3].ColumnWidth:=16;
Colum.Columns[4].ColumnWidth:=33;
Colum.Columns[5].ColumnWidth:=23;
Colum.Columns[6].ColumnWidth:=30;
end;
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Продолжаем копаться в листах Excel и изучать особенности работы с ними. Сегодня мы рассмотри свойства объекта WorkSheet.
Основными свойствами, которые Вы с большой вероятностью будете использовать в своей работе с Excel в Delphi являются:
- Cells — ячейки
- Columns — столбцы
- Name — название листа
- Range — диапазон ячеек
- Rows — сроки
- StandartHeight — высота строк «по умолчанию»
- StandartWidth — ширина столбцов «по умолчанию»
- UsedRange — задействованный диапазон ячеек
- Comments — комментарии
Всего у листа рабочей книги Excel насчитывается 54 различных свойств, но, как показвает практика, для использования Excel в Dephi достаточно 9-15 различных свойств листа, чтобы получить необходимый результат, обеспечивающий удобство и наглядность представляемых данных.
Рассмотрим применение указанных выше свойств листа Worksheet при работе с Excel в Delphi.
1. Свойство Cells
Возвращает объект диапазона, который представляет собой все ячейки на листе (а не только клетки, которые используются в настоящее время)
Пример вызова:
MyExcel.ActiveWorkBook.ActiveSheet.Cells
Однако использование свойства Cells возможно (и более практично) в другом виде. Вы можете указать сразу за словом Cells номера столбца и строки и, таким образом, получить доступ к конкретной ячейке листа. Например, забегая немного вперед, посмотрим, как можно удалить формулы из ячейки:
MyExcel.ActiveWorkBook.ActiveSheet.Cells[5,3].ClearContents
Выполнив такую операцию Вы удалите из ячейки С5 формулу (или любое другое содержимое). Как можно заметить, в отличие от работы с таблицами StringGrid Delphi, здесь вначале указывается номер строки, а затем номер столбца (у String Grid напротив — сначала указывается номер столбца, а затем номер строки).
Аналогичным образом Вы можете записать в ячейку данные:
MyExcel.ActiveWorkBook.ActiveSheet.Cells[5,3]:='Пример текста'
Ну, а чтобы показать использование этого свойства на примере, давайте напишем простенькую процедуру копирования таблицы StringGrid в любую область листа Worksheet Excel.
procedure WriteTable(FirstCol, FirstRow:integer; Grid: TStringGrid); var col,row:integer; begin try for col := 0 to Grid.ColCount - 1 do for row := 0 to Grid.RowCount - 1 do MyExcel.ActiveWorkBook.ActiveSheet.Cells[FirstRow+row+1, FirstCol+col+1]:=Grid.Cells[col, row]; except raise Exception.Create('Запись таблицы завершилась ошибкой') end; end;
Здесь в качестве параметров процедуры необходимо задать: номера первого столбца (FirstCol) и первой строки (FirstRow) на листе Excel, начиная с которых необходимо копировать данные из таблицы StringGrid (Grid). Заметьте, что вызов свойств Cells у StringGrid и WorkSheet происходит по-разному (см. индексы ячейки).
Естественно, что представленная процедура может с легкостью применяться при копировании небольших таблиц. Однако при импорте больших объемов данных в Excel эта процедура будет очень сильно тормозить работы основной программы. Более скоростной способ импорта данных из Excel в Delphi и наоборот мы рассмотрим позже, при рассмотрении объекта Range.
2. Свойство Columns
Возвращает объект диапазона, который представляет собой все столбцы на активном листе. Если активный документ не является листом (а, например, диаграммой), то вызов свойства Columns приводит к исключительной ситуации.
Пример вызова:
MyExcel.ActiveWorkBook.ActiveSheet.Columns
Это свойство удобно использовать при редактировании столбцов данных. Например вот так:
MyExcel.ActiveWorkBook.ActiveSheet.Columns[1].Font.Bold
Вы сможете изменить шрифт в столбце А на полужирный. Также Вы можете изменять внешний вид столбцов, перерисовывать границы ячеек и т.д.
3. Свойство Name
С этим свойством мы уже сталкивались. Свойство Name возвращает имя рабочего листа книги.
Пример вызова:
MyExcel.ActiveWorkBook.ActiveSheet.Name:='Новое название листа'
Так мы изменили имя текущего активного листа Excel. Кроме этого, свойство Name удобо использовать при поиске необходимого листа.
4. Свойство Range
Возвращает объект, представляющий собой одну ячейку или диапазон ячеек.
Пример вызова:
MyExcel.ActiveWorkBook.ActiveSheet.Range['A1']:='Hello World'
Так, мы получили доступ к ячейке А1 и записали в неё текст. А следующий фрагмент кода демонстрирует быстрый способ экспорта данных из листа Excel в Delphi:
var Numbers : Variant; data: string; i: integer; begin ... Numbers:=MyExcel.ActiveSheet.Range[Num+IntToStr(FirstRows), Num+IntToStr(Rows)].Value; for i:=1 to MyExcel.ActiveSheet.UsedRange.Rows.Count do data:=Numbers[i,1] ... end;
Так, мы за одно обращение к листу считали столбец данных и в дальнейшем, не используя напрямую объект WorkSheet, обработали все данные в вариантном массиве Numbers. Этот способ чтения данных с листа Excel является наиболее скоростным из всех известных мне в настоящее время. Если знаете способ более скоростной — буду очень рад, если поделитесь им.
5. Свойство Rows
Это свойство аналогично свойству Columns, но в отличие от него, возвращает объект, представляющий собой строку листа. С помощью этого свойства Вы также можете изменять внешний вид ячеек листа, изменять шрифт и т.д.
6. Свойства StandartHeight и StandartWidth
Эти свойства позволяют получить значения высоты и ширины ячеек листа «по умолчанию». Свойство доступно только для чтения, т.е. вызов:
MyExcel.ActiveWorkBook.ActiveSheet.StandartHeight:=14
Приведет к исключительной ситуации. Вы можете использовать это свойство, например, когда необходимо гарантировано установить значения высоты и ширины строк в значения «по умолчанию»
7. Свойство UsedRange
Возвращает диапазон занятых ячеек листа. Свойство очень удобно использовать, когда необходимо узнать количество занятых строк и столбцов на листе:
Rows:=MyExcel.ActiveSheet.UsedRange.Rows.Count; Columns:=MyExcel.ActiveSheet.UsedRange.Columns.Count;
и далее, используя эти данные быстро прочитать весь занятый диапазон в вариантный массив для дальнейшей обработки.
Это свойство возвращает коллекцию комментариев на листе.
Например:
MyExcel.ActiveSheet.Comments[2].Delete
удалит второй комментарий из коллекции, а:
MyExcel.ActiveSheet.Range("e5").AddComment('Текст комментария')
добавит в ячейку е5 новый комментарий.
Итак, резюмируем. Сегодня мы узнали: как записать данные в ячейку листа Excel, как прочитать данные из диапазона ячеек, как скопировать таблицу из Delphi в Excel, как быстро экспортировать данные из Excel в Delphi.
В следующий раз займемся работой с ячейками листа, а именно научимся копировать таблицы из Delphi в Excel один-к-одному с сохранением всех цветов, границ ячеек и т.д., а также, попробуем строить диаграммы, которые опять же очень часто требуются при разработке бизнес-приложений.
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Falk0ner, вс, 06/07/2008 — 15:35.
- Доступ к ячейкам Excel
Высота и ширина ячейки Excel
Высота и ширина ячейки
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
column:variant;width:real):boolean;
begin
SetColumnWidth:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Columns
[column].ColumnWidth:=width;
except
SetColumnWidth:=false;
end;
End;
Для определения ширины столбца используйте следующий оператор: width:=E.ActiveWorkbook .Sheets.Item[sheet].Columns[column].ColumnWidth;
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
height:real):boolean;
begin
SetRowHeight:=true;
try
E.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight:=height;
except
SetRowHeight:=false;
end;
End;
Для определения высоты строки используйте следующий оператор: height:=E.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight;
Содержание
- Высота ячеек delphi excel
- Высота ячеек delphi excel
- Excel в Delphi. Свойства объекта WorkSheet.
- 1. Свойство Cells
- 2. Свойство Columns
- 3. Свойство Name
- 4. Свойство Range
- 5. Свойство Rows
- 6. Свойства StandartHeight и StandartWidth
- 7. Свойство UsedRange
- 8. Свойство Comments
- delphi excel высота строки
- 1. Свойство Cells
- 2. Свойство Columns
- 3. Свойство Name
- 4. Свойство Range
- 5. Свойство Rows
- 6. Свойства StandartHeight и StandartWidth
- 7. Свойство UsedRange
- 8. Свойство Comments
Высота ячеек delphi excel
Подскажите, как?
Строка типа ExcelWorksheet.Rows.Height:=67 вызывает ошибку:
cannot assign to a resd-only property
← →
Антоныч ( 2004-09-08 15:56 ) [1]
Высота и ширина ячейки
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
column:variant;width:real):boolean;
begin
SetColumnWidth:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Columns
[column].ColumnWidth:=width;
except
SetColumnWidth:=false;
end;
End;
Для определения ширины столбца используйте следующий оператор: width:=ExcelApplication.ActiveWorkbook .Sheets.Item[sheet].Columns[column].ColumnWidth;
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
height:real):boolean;
begin
SetRowHeight:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight:=height;
except
SetRowHeight:=false;
end;
End;
Для определения высоты строки используйте следующий оператор: height:=ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight;
Есть подробная документация по взаимодействию Delphi с Word и Excel. Могу выслать на мыло.
← →
cad2206 ( 2004-09-08 16:34 ) [2]
Антоныч, эта функция устанавливает размер для всех ячеек на странице, мне нужно отдельно для каждой ячейки.
← →
BillyJeans ( 2004-09-08 17:34 ) [3]
а может отдельно для каждой строки.
← →
YurikGL © ( 2004-09-08 21:11 ) [4]
интересное о себе.
← →
pavel_guzhanov ( 2004-09-09 13:01 ) [6]
Источник
Высота ячеек delphi excel
Подскажите, как?
Строка типа ExcelWorksheet.Rows.Height:=67 вызывает ошибку:
cannot assign to a resd-only property
← →
Антоныч ( 2004-09-08 15:56 ) [1]
Высота и ширина ячейки
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
column:variant;width:real):boolean;
begin
SetColumnWidth:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Columns
[column].ColumnWidth:=width;
except
SetColumnWidth:=false;
end;
End;
Для определения ширины столбца используйте следующий оператор: width:=ExcelApplication.ActiveWorkbook .Sheets.Item[sheet].Columns[column].ColumnWidth;
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
height:real):boolean;
begin
SetRowHeight:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight:=height;
except
SetRowHeight:=false;
end;
End;
Для определения высоты строки используйте следующий оператор: height:=ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight;
Есть подробная документация по взаимодействию Delphi с Word и Excel. Могу выслать на мыло.
← →
cad2206 ( 2004-09-08 16:34 ) [2]
Антоныч, эта функция устанавливает размер для всех ячеек на странице, мне нужно отдельно для каждой ячейки.
← →
BillyJeans ( 2004-09-08 17:34 ) [3]
а может отдельно для каждой строки.
← →
YurikGL © ( 2004-09-08 21:11 ) [4]
интересное о себе.
← →
pavel_guzhanov ( 2004-09-09 13:01 ) [6]
Источник
Excel в Delphi. Свойства объекта WorkSheet.
Продолжаем копаться в листах Excel и изучать особенности работы с ними. Сегодня мы рассмотри свойства объекта WorkSheet.
Основными свойствами, которые Вы с большой вероятностью будете использовать в своей работе с Excel в Delphi являются:
- Cells — ячейки
- Columns — столбцы
- Name — название листа
- Range — диапазон ячеек
- Rows — сроки
- StandartHeight — высота строк «по умолчанию»
- StandartWidth — ширина столбцов «по умолчанию»
- UsedRange — задействованный диапазон ячеек
- Comments — комментарии
Всего у листа рабочей книги Excel насчитывается 54 различных свойств, но, как показвает практика, для использования Excel в Dephi достаточно 9-15 различных свойств листа, чтобы получить необходимый результат, обеспечивающий удобство и наглядность представляемых данных.
Рассмотрим применение указанных выше свойств листа Worksheet при работе с Excel в Delphi.
1. Свойство Cells
Возвращает объект диапазона, который представляет собой все ячейки на листе (а не только клетки, которые используются в настоящее время)
Однако использование свойства Cells возможно (и более практично) в другом виде. Вы можете указать сразу за словом Cells номера столбца и строки и, таким образом, получить доступ к конкретной ячейке листа. Например, забегая немного вперед, посмотрим, как можно удалить формулы из ячейки:
Выполнив такую операцию Вы удалите из ячейки С5 формулу (или любое другое содержимое). Как можно заметить, в отличие от работы с таблицами StringGrid Delphi, здесь вначале указывается номер строки, а затем номер столбца (у String Grid напротив — сначала указывается номер столбца, а затем номер строки).
Аналогичным образом Вы можете записать в ячейку данные:
Ну, а чтобы показать использование этого свойства на примере, давайте напишем простенькую процедуру копирования таблицы StringGrid в любую область листа Worksheet Excel.
Здесь в качестве параметров процедуры необходимо задать: номера первого столбца (FirstCol) и первой строки (FirstRow) на листе Excel, начиная с которых необходимо копировать данные из таблицы StringGrid (Grid). Заметьте, что вызов свойств Cells у StringGrid и WorkSheet происходит по-разному (см. индексы ячейки).
Естественно, что представленная процедура может с легкостью применяться при копировании небольших таблиц. Однако при импорте больших объемов данных в Excel эта процедура будет очень сильно тормозить работы основной программы. Более скоростной способ импорта данных из Excel в Delphi и наоборот мы рассмотрим позже, при рассмотрении объекта Range.
2. Свойство Columns
Возвращает объект диапазона, который представляет собой все столбцы на активном листе. Если активный документ не является листом (а, например, диаграммой), то вызов свойства Columns приводит к исключительной ситуации.
Это свойство удобно использовать при редактировании столбцов данных. Например вот так:
Вы сможете изменить шрифт в столбце А на полужирный. Также Вы можете изменять внешний вид столбцов, перерисовывать границы ячеек и т.д.
3. Свойство Name
С этим свойством мы уже сталкивались. Свойство Name возвращает имя рабочего листа книги.
Так мы изменили имя текущего активного листа Excel. Кроме этого, свойство Name удобо использовать при поиске необходимого листа.
4. Свойство Range
Возвращает объект, представляющий собой одну ячейку или диапазон ячеек.
Так, мы получили доступ к ячейке А1 и записали в неё текст. А следующий фрагмент кода демонстрирует быстрый способ экспорта данных из листа Excel в Delphi:
Так, мы за одно обращение к листу считали столбец данных и в дальнейшем, не используя напрямую объект WorkSheet, обработали все данные в вариантном массиве Numbers. Этот способ чтения данных с листа Excel является наиболее скоростным из всех известных мне в настоящее время. Если знаете способ более скоростной — буду очень рад, если поделитесь им.
5. Свойство Rows
Это свойство аналогично свойству Columns, но в отличие от него, возвращает объект, представляющий собой строку листа. С помощью этого свойства Вы также можете изменять внешний вид ячеек листа, изменять шрифт и т.д.
6. Свойства StandartHeight и StandartWidth
Эти свойства позволяют получить значения высоты и ширины ячеек листа «по умолчанию». Свойство доступно только для чтения, т.е. вызов:
Приведет к исключительной ситуации. Вы можете использовать это свойство, например, когда необходимо гарантировано установить значения высоты и ширины строк в значения «по умолчанию»
7. Свойство UsedRange
Возвращает диапазон занятых ячеек листа. Свойство очень удобно использовать, когда необходимо узнать количество занятых строк и столбцов на листе:
и далее, используя эти данные быстро прочитать весь занятый диапазон в вариантный массив для дальнейшей обработки.
Это свойство возвращает коллекцию комментариев на листе.
удалит второй комментарий из коллекции, а:
добавит в ячейку е5 новый комментарий.
Итак, резюмируем. Сегодня мы узнали: как записать данные в ячейку листа Excel, как прочитать данные из диапазона ячеек, как скопировать таблицу из Delphi в Excel, как быстро экспортировать данные из Excel в Delphi.
В следующий раз займемся работой с ячейками листа, а именно научимся копировать таблицы из Delphi в Excel один-к-одному с сохранением всех цветов, границ ячеек и т.д., а также, попробуем строить диаграммы, которые опять же очень часто требуются при разработке бизнес-приложений.
Источник
delphi excel высота строки
Подскажите, как?
Строка типа ExcelWorksheet.Rows.Height:=67 вызывает ошибку:
cannot assign to a resd-only property
← →
Антоныч ( 2004-09-08 15:56 ) [1]
Высота и ширина ячейки
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
column:variant;width:real):boolean;
begin
SetColumnW > try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Columns
[column].ColumnW > except
SetColumnW > end;
End;
Для определения ширины столбца используйте следующий оператор: w >
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
height:real):boolean;
begin
SetRowHeight:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight:=height;
except
SetRowHeight:=false;
end;
End;
Для определения высоты строки используйте следующий оператор: height:=ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight;
Есть подробная документация по взаимодействию Delphi с Word и Excel. Могу выслать на мыло.
← →
cad2206 ( 2004-09-08 16:34 ) [2]
Антоныч, эта функция устанавливает размер для всех ячеек на странице, мне нужно отдельно для каждой ячейки.
← →
BillyJeans ( 2004-09-08 17:34 ) [3]
а может отдельно для каждой строки.
← →
YurikGL © ( 2004-09-08 21:11 ) [4]
http://www.delphimaster.ru/cgi-bin/anketa.pl? >
интересное о себе.
← →
DarkMan ( 2004-09-09 09:53 ) [5]
← →
pavel_guzhanov ( 2004-09-09 13:01 ) [6]
Продолжаем копаться в листах Excel и изучать особенности работы с ними. Сегодня мы рассмотри свойства объекта WorkSheet.
Основными свойствами, которые Вы с большой вероятностью будете использовать в своей работе с Excel в Delphi являются:
- Cells — ячейки
- Columns — столбцы
- Name — название листа
- Range — диапазон ячеек
- Rows — сроки
- StandartHeight — высота строк «по умолчанию»
- StandartWidth — ширина столбцов «по умолчанию»
- UsedRange — задействованный диапазон ячеек
- Comments — комментарии
Всего у листа рабочей книги Excel насчитывается 54 различных свойств, но, как показвает практика, для использования Excel в Dephi достаточно 9-15 различных свойств листа, чтобы получить необходимый результат, обеспечивающий удобство и наглядность представляемых данных.
Рассмотрим применение указанных выше свойств листа Worksheet при работе с Excel в Delphi.
1. Свойство Cells
Возвращает объект диапазона, который представляет собой все ячейки на листе (а не только клетки, которые используются в настоящее время)
Однако использование свойства Cells возможно (и более практично) в другом виде. Вы можете указать сразу за словом Cells номера столбца и строки и, таким образом, получить доступ к конкретной ячейке листа. Например, забегая немного вперед, посмотрим, как можно удалить формулы из ячейки:
Выполнив такую операцию Вы удалите из ячейки С5 формулу (или любое другое содержимое). Как можно заметить, в отличие от работы с таблицами StringGrid Delphi, здесь вначале указывается номер строки, а затем номер столбца (у String Grid напротив — сначала указывается номер столбца, а затем номер строки).
Аналогичным образом Вы можете записать в ячейку данные:
Ну, а чтобы показать использование этого свойства на примере, давайте напишем простенькую процедуру копирования таблицы StringGrid в любую область листа Worksheet Excel.
Здесь в качестве параметров процедуры необходимо задать: номера первого столбца (FirstCol) и первой строки (FirstRow) на листе Excel, начиная с которых необходимо копировать данные из таблицы StringGrid (Grid). Заметьте, что вызов свойств Cells у StringGrid и WorkSheet происходит по-разному (см. индексы ячейки).
Естественно, что представленная процедура может с легкостью применяться при копировании небольших таблиц. Однако при импорте больших объемов данных в Excel эта процедура будет очень сильно тормозить работы основной программы. Более скоростной способ импорта данных из Excel в Delphi и наоборот мы рассмотрим позже, при рассмотрении объекта Range.
2. Свойство Columns
Возвращает объект диапазона, который представляет собой все столбцы на активном листе. Если активный документ не является листом (а, например, диаграммой), то вызов свойства Columns приводит к исключительной ситуации.
Это свойство удобно использовать при редактировании столбцов данных. Например вот так:
Вы сможете изменить шрифт в столбце А на полужирный. Также Вы можете изменять внешний вид столбцов, перерисовывать границы ячеек и т.д.
3. Свойство Name
С этим свойством мы уже сталкивались. Свойство Name возвращает имя рабочего листа книги.
Так мы изменили имя текущего активного листа Excel. Кроме этого, свойство Name удобо использовать при поиске необходимого листа.
4. Свойство Range
Возвращает объект, представляющий собой одну ячейку или диапазон ячеек.
Так, мы получили доступ к ячейке А1 и записали в неё текст. А следующий фрагмент кода демонстрирует быстрый способ экспорта данных из листа Excel в Delphi:
Так, мы за одно обращение к листу считали столбец данных и в дальнейшем, не используя напрямую объект WorkSheet, обработали все данные в вариантном массиве Numbers. Этот способ чтения данных с листа Excel является наиболее скоростным из всех известных мне в настоящее время. Если знаете способ более скоростной — буду очень рад, если поделитесь им.
5. Свойство Rows
Это свойство аналогично свойству Columns, но в отличие от него, возвращает объект, представляющий собой строку листа. С помощью этого свойства Вы также можете изменять внешний вид ячеек листа, изменять шрифт и т.д.
6. Свойства StandartHeight и StandartWidth
Эти свойства позволяют получить значения высоты и ширины ячеек листа «по умолчанию». Свойство доступно только для чтения, т.е. вызов:
Приведет к исключительной ситуации. Вы можете использовать это свойство, например, когда необходимо гарантировано установить значения высоты и ширины строк в значения «по умолчанию»
7. Свойство UsedRange
Возвращает диапазон занятых ячеек листа. Свойство очень удобно использовать, когда необходимо узнать количество занятых строк и столбцов на листе:
и далее, используя эти данные быстро прочитать весь занятый диапазон в вариантный массив для дальнейшей обработки.
Это свойство возвращает коллекцию комментариев на листе.
удалит второй комментарий из коллекции, а:
добавит в ячейку е5 новый комментарий.
Итак, резюмируем. Сегодня мы узнали: как записать данные в ячейку листа Excel, как прочитать данные из диапазона ячеек, как скопировать таблицу из Delphi в Excel, как быстро экспортировать данные из Excel в Delphi.
В следующий раз займемся работой с ячейками листа, а именно научимся копировать таблицы из Delphi в Excel один-к-одному с сохранением всех цветов, границ ячеек и т.д., а также, попробуем строить диаграммы, которые опять же очень часто требуются при разработке бизнес-приложений.
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
Для определения ширины столбца используйте следующий оператор: w >
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
Источник
0 / 0 / 0 Регистрация: 02.12.2011 Сообщений: 16 |
|
1 |
|
19.12.2011, 00:26. Показов 25514. Ответов 6 Метки autofit, excel, ms excel, vba, выравнивание по высоте, выравнивание по ширине, высота ячейки, объединённые ячейки, подбор высоты, подбор ширины, подгон высоты, подгон размера, подгон ширины, размер ячейки, ячейка, ячейки (Все метки)
В ячейку вставляется очень длинный текст, который при печати просто не виден. Нужно, чтобы продолжение текста переносилось в сторку ниже.
0 |
Mawrat 13094 / 5875 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||||||||||
19.12.2011, 04:05 |
2 |
|||||||||||
Сообщение было отмечено как решение РешениеДля такой ячейки надо выставить свойство WrapText := True.
После того, как во всех ячейках нужного диапазона текст будет установлен, можно выполнить подбор высоты строк так, чтобы весь текст с учётом переносов оказался видимым:
Также можно выполнять подгонку ширины столбцов:
4 |
Fistashka 0 / 0 / 0 Регистрация: 02.12.2011 Сообщений: 16 |
||||||||||||||||||||||||
19.12.2011, 13:11 [ТС] |
3 |
|||||||||||||||||||||||
Для такой ячейки надо выставить свойство WrapText := True.
После того, как во всех ячейках нужного диапазона текст будет установлен, можно выполнить подбор высоты строк так, чтобы весь текст с учётом переносов оказался видимым:
Также можно выполнять подгонку ширины столбцов:
Спасибо большое, буду пытаться ))) Добавлено через 1 час 11 минут
Для такой ячейки надо выставить свойство WrapText := True.
После того, как во всех ячейках нужного диапазона текст будет установлен, можно выполнить подбор высоты строк так, чтобы весь текст с учётом переносов оказался видимым:
Также можно выполнять подгонку ширины столбцов:
Все хорошо, но возникает проблема: AutoFit не работает с объединенными ячейками, а у меня именно такие.
0 |
Mawrat 13094 / 5875 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||||
20.12.2011, 21:20 |
4 |
|||||
Все хорошо, но возникает проблема: AutoFit не работает с объединенными ячейками, а у меня именно такие. Если ячейки объединены по нескольким строкам, то тогда неизвестно для каких из этих строк следует подгонять высоту. Ведь это можно сделать разными способами, изменяя высоту той или иной строки, в пределах объединения. Поэтому метод AutoFit не выполняет изменений для объединённых ячеек.
Осталось код процедуры RngAutoFit() перевести на Delphi. Вложения
1 |
Fistashka 0 / 0 / 0 Регистрация: 02.12.2011 Сообщений: 16 |
||||
20.12.2011, 21:32 [ТС] |
5 |
|||
Если ячейки объединены по нескольким строкам, то тогда неизвестно для каких из этих строк следует подгонять высоту. Ведь это можно сделать разными способами, изменяя высоту той или иной строки, в пределах объединения. Поэтому метод AutoFit не выполняет изменений для объединённых ячеек.
Осталось код процедуры RngAutoFit() перевести на Delphi. Благодарствую, буду думать ))
0 |
Mawrat 13094 / 5875 / 1706 Регистрация: 19.09.2009 Сообщений: 8,808 |
||||||||||||||||||||||||||||||
21.12.2011, 16:41 |
6 |
|||||||||||||||||||||||||||||
Сообщение было отмечено как решение Решение Сделал перевод для Delphi.
на:
Потому что в коде
на самом деле сравниваются не ссылки на указанные объекты, а сравниваются значения свойств по умолчанию для этих объектов. Так как Cell и MRng.Cells(1, 1) принадлежат типу Excel.Range, то для них свойством по умолчанию будет Value. Т. е. код:
эквивалентен коду:
А это не то что нам нужно. Нам надо не значение ячеек сравнивать, а выяснить, ссылаются ли эти переменные на одну и ту же ячейку. Для этого было решено использовать свойство Address.
Код Delphi:
В приложенном архиве проект Delphi и книга Excel с проектом VBA. Вложения
3 |
0 / 0 / 0 Регистрация: 02.12.2011 Сообщений: 16 |
|
21.12.2011, 18:30 [ТС] |
7 |
Спасибо Вам огромное, сама бы я никогда до этого не додумалась )) Вы меня просто спасли ))
0 |
I’m moving some older code from Office 2000 to Office 2010 and have ran into an issue with getting Excel to Autofit Columns
The code that was working is as follows:
for x := 1 to LV.Columns.Count do
XLApp.Columns[x].EntireColumn.AutoFit;
Where XLApp is a TExcelApplication component
When I look at VBA the equivalent code should be
Columns("A:A").EntireColumn.AutoFit
It’s easy for me to change my code so that the range matches the VBA, but that doesn’t seem to be the problem. The error returned by the compiler is
Class does not have a default property
And the [x]
is highlighted. Code completion does not offer any way that I can see of selecting an individual column, either as an integer or a Range.
Any suggestions?
asked Mar 18, 2013 at 10:38
The code that you have will work for late bound COM. But you state that you are using early bound COM.
For early bound COM you need to use something like this:
ExcelApp.Range['A1','A1'].EntireColumn.AutoFit;
I cannot explain how the code worked in the past. Perhaps the import unit created from the Excel type library differed in some subtle way.
answered Mar 18, 2013 at 10:53
David HeffernanDavid Heffernan
598k42 gold badges1061 silver badges1474 bronze badges
1
На чтение 7 мин. Просмотров 66 Опубликовано 15.12.2019
Подскажите, как?
Строка типа ExcelWorksheet.Rows.Height:=67 вызывает ошибку:
cannot assign to a resd-only property
← →
Антоныч ( 2004-09-08 15:56 ) [1]
Высота и ширина ячейки
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
column:variant;width:real):boolean;
begin
SetColumnW > try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Columns
[column].ColumnW > except
SetColumnW > end;
End;
Для определения ширины столбца используйте следующий оператор: w >
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
height:real):boolean;
begin
SetRowHeight:=true;
try
ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight:=height;
except
SetRowHeight:=false;
end;
End;
Для определения высоты строки используйте следующий оператор: height:=ExcelApplication.ActiveWorkbook.Sheets.Item[sheet].Rows[row].RowHeight;
Есть подробная документация по взаимодействию Delphi с Word и Excel. Могу выслать на мыло.
← →
cad2206 ( 2004-09-08 16:34 ) [2]
Антоныч, эта функция устанавливает размер для всех ячеек на странице, мне нужно отдельно для каждой ячейки.
← →
BillyJeans ( 2004-09-08 17:34 ) [3]
а может отдельно для каждой строки.
← →
YurikGL © ( 2004-09-08 21:11 ) [4]
http://www.delphimaster.ru/cgi-bin/anketa.pl? >
интересное о себе.
← →
DarkMan ( 2004-09-09 09:53 ) [5]
← →
pavel_guzhanov ( 2004-09-09 13:01 ) [6]
Продолжаем копаться в листах Excel и изучать особенности работы с ними. Сегодня мы рассмотри свойства объекта WorkSheet.
Основными свойствами, которые Вы с большой вероятностью будете использовать в своей работе с Excel в Delphi являются:
- Cells — ячейки
- Columns — столбцы
- Name — название листа
- Range — диапазон ячеек
- Rows — сроки
- StandartHeight — высота строк «по умолчанию»
- StandartWidth — ширина столбцов «по умолчанию»
- UsedRange — задействованный диапазон ячеек
- Comments — комментарии
Всего у листа рабочей книги Excel насчитывается 54 различных свойств, но, как показвает практика, для использования Excel в Dephi достаточно 9-15 различных свойств листа, чтобы получить необходимый результат, обеспечивающий удобство и наглядность представляемых данных.
Рассмотрим применение указанных выше свойств листа Worksheet при работе с Excel в Delphi.
Содержание
- 1. Свойство Cells
- 2. Свойство Columns
- 3. Свойство Name
- 4. Свойство Range
- 5. Свойство Rows
- 6. Свойства StandartHeight и StandartWidth
- 7. Свойство UsedRange
- 8. Свойство Comments
1. Свойство Cells
Возвращает объект диапазона, который представляет собой все ячейки на листе (а не только клетки, которые используются в настоящее время)
Однако использование свойства Cells возможно (и более практично) в другом виде. Вы можете указать сразу за словом Cells номера столбца и строки и, таким образом, получить доступ к конкретной ячейке листа. Например, забегая немного вперед, посмотрим, как можно удалить формулы из ячейки:
Выполнив такую операцию Вы удалите из ячейки С5 формулу (или любое другое содержимое). Как можно заметить, в отличие от работы с таблицами StringGrid Delphi, здесь вначале указывается номер строки, а затем номер столбца (у String Grid напротив — сначала указывается номер столбца, а затем номер строки).
Аналогичным образом Вы можете записать в ячейку данные:
Ну, а чтобы показать использование этого свойства на примере, давайте напишем простенькую процедуру копирования таблицы StringGrid в любую область листа Worksheet Excel.
Здесь в качестве параметров процедуры необходимо задать: номера первого столбца (FirstCol) и первой строки (FirstRow) на листе Excel, начиная с которых необходимо копировать данные из таблицы StringGrid (Grid). Заметьте, что вызов свойств Cells у StringGrid и WorkSheet происходит по-разному (см. индексы ячейки).
Естественно, что представленная процедура может с легкостью применяться при копировании небольших таблиц. Однако при импорте больших объемов данных в Excel эта процедура будет очень сильно тормозить работы основной программы. Более скоростной способ импорта данных из Excel в Delphi и наоборот мы рассмотрим позже, при рассмотрении объекта Range.
2. Свойство Columns
Возвращает объект диапазона, который представляет собой все столбцы на активном листе. Если активный документ не является листом (а, например, диаграммой), то вызов свойства Columns приводит к исключительной ситуации.
Это свойство удобно использовать при редактировании столбцов данных. Например вот так:
Вы сможете изменить шрифт в столбце А на полужирный. Также Вы можете изменять внешний вид столбцов, перерисовывать границы ячеек и т.д.
3. Свойство Name
С этим свойством мы уже сталкивались. Свойство Name возвращает имя рабочего листа книги.
Так мы изменили имя текущего активного листа Excel. Кроме этого, свойство Name удобо использовать при поиске необходимого листа.
4. Свойство Range
Возвращает объект, представляющий собой одну ячейку или диапазон ячеек.
Так, мы получили доступ к ячейке А1 и записали в неё текст. А следующий фрагмент кода демонстрирует быстрый способ экспорта данных из листа Excel в Delphi:
Так, мы за одно обращение к листу считали столбец данных и в дальнейшем, не используя напрямую объект WorkSheet, обработали все данные в вариантном массиве Numbers. Этот способ чтения данных с листа Excel является наиболее скоростным из всех известных мне в настоящее время. Если знаете способ более скоростной — буду очень рад, если поделитесь им.
5. Свойство Rows
Это свойство аналогично свойству Columns, но в отличие от него, возвращает объект, представляющий собой строку листа. С помощью этого свойства Вы также можете изменять внешний вид ячеек листа, изменять шрифт и т.д.
6. Свойства StandartHeight и StandartWidth
Эти свойства позволяют получить значения высоты и ширины ячеек листа «по умолчанию». Свойство доступно только для чтения, т.е. вызов:
Приведет к исключительной ситуации. Вы можете использовать это свойство, например, когда необходимо гарантировано установить значения высоты и ширины строк в значения «по умолчанию»
7. Свойство UsedRange
Возвращает диапазон занятых ячеек листа. Свойство очень удобно использовать, когда необходимо узнать количество занятых строк и столбцов на листе:
и далее, используя эти данные быстро прочитать весь занятый диапазон в вариантный массив для дальнейшей обработки.
Это свойство возвращает коллекцию комментариев на листе.
удалит второй комментарий из коллекции, а:
добавит в ячейку е5 новый комментарий.
Итак, резюмируем. Сегодня мы узнали: как записать данные в ячейку листа Excel, как прочитать данные из диапазона ячеек, как скопировать таблицу из Delphi в Excel, как быстро экспортировать данные из Excel в Delphi.
В следующий раз займемся работой с ячейками листа, а именно научимся копировать таблицы из Delphi в Excel один-к-одному с сохранением всех цветов, границ ячеек и т.д., а также, попробуем строить диаграммы, которые опять же очень часто требуются при разработке бизнес-приложений.
Чтобы формировать вид документа в процессе его создания, недостаточно только функций записи информации в ячейки, необходимо также изменять ее визуальные параметры. Самое простое, с чего можно начать, — изменение ширины столбцов и высоты строк. Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя номер колонки в буквенном или числовом формате и свойство коллекции ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает ширину столбца.
Function SetColumnWidth (sheet:variant;
Для определения ширины столбца используйте следующий оператор: w >
Доступ к высоте строк можно получить, используя коллекцию Rows. Назначая номер строки и свойство коллекции RowHeight, можно изменить высоту строки или назначить ее. Определенная ниже функция, реализованная на Delphi, устанавливает высоту строки.
Function SetRowHeight (sheet:variant;row:variant;
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Cookie | Duration | Description |
---|---|---|
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Analytics». |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category «Functional». |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category «Necessary». |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Performance». |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
Форум программистов Vingrad
Новости ·
Фриланс ·
FAQ
Правила ·
Помощь ·
Рейтинг ·
Избранное ·
Поиск ·
Участники
Форум -> Программирование -> Delphi, Kylix and Pascal -> Delphi: ActiveX/СОМ/CORBA
(еще)
Модераторы: MetalFan |
Поиск: |
|
Как высоту строки в Excel задать? Как высоту строки в Excel задать? |
Опции темы |
Lianamir |
|
||
Шустрый Профиль Репутация: нет
|
Исправте плиз, то здесь не так???
|
||
|
|||
_hunter |
|
||
Эксперт Профиль
Репутация: 2
|
чтобы понять что здесь не так нужно выполнить несколько простых действий: ——————— Tempora mutantur, et nos mutamur in illis… |
||
|
|||
Akella |
|
||||
Творец Профиль
Репутация: 2
|
http://forum.vingrad.ru/index.php?showtopi…t&p=1871967
http://forum.vingrad.ru/forum/topic-84634/…ry651633/0.html
|
||||
|
|||||
|
Правила форума «Delphi: ActiveX/СОМ/CORBA» | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
Подписаться на тему |
Подписка на этот форум |
Скачать/Распечатать тему
[ Время генерации скрипта: 0.1139 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Реклама на сайте
Информационное спонсорство
procedure ExportToExcel(var ASheetRef: Variant);
function GetCol(Col: integer): String;
begin
if Col<27 then
Result := Chr(Col+64)
else
Result := Chr((Col div 26)+64)+ Chr((Col mod 26)+64)
end;
//function CellsToRange(Row1, Col1: Integer): String; overload;
//var
// S : String;
//begin
// S := GetCol(Col1)+IntToStr(Row1);
// Result := S;
//end;
function CellsToRange(Row1, Col1, Row2, Col2: Integer): String; overload;
var
S : String;
begin
S := GetCol(Col1)+IntToStr(Row1)+’:’+ GetCol(Col2)+ IntToStr(Row2);
Result := S;
end;
procedure ExportTextView(var ASheetRef: Variant);
const
EXCEL_COL_ITEMS_WIDTH = 40; //width of first column (with items)
EXCEL_COL_CODE_WIDTH = 5; //width of second column (with codes of items)
EXCEL_COL_DATA_WIDTH = 11; //width of columns with data
EXCEL_ROW_HEADLINES_HEIGHT = 40; //height of columns with headlines
EXCEL_ROW_TWO_LINES_HEIGHT = 26; //height of cells with two lines of text
EXCEL_DEFAULT_ROW_HEIGHT = 13;
VERTICAL_TOP_ALIGNMENT = 1;
HORIZONTAL_CENTER_ALIGNMENT = 3;
HORIZONTAL_LEFT_ALIGNMENT = 2;
EXCEL_FONT_NAME = ‘Arial’;
EXCEL_FONT_SIZE = 10;
DATA_FORMAT = ‘# ###,0;(# ###,0);0,0’;
var
RowRef,
ColRef: Variant;
begin
//set number format
ASheetRef.Range[CellsToRange(5,3,45,PeriodCount + 2)].NumberFormat:=DATA_FORMAT;
ASheetRef.Range[CellsToRange(50,3,86,PeriodCount + 2)].NumberFormat:=DATA_FORMAT;
//set columns widths, firstly for all columns in the range
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].ColumnWidth:=EXCEL_COL_DATA_WIDTH;
//then for some
ColRef:=ASheetRef.Columns;
ColRef.Columns[1].ColumnWidth:=EXCEL_COL_ITEMS_WIDTH;
ColRef.Columns[2].ColumnWidth:=EXCEL_COL_CODE_WIDTH;
//set rows height, firstly for all rows
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].RowHeight:=EXCEL_DEFAULT_ROW_HEIGHT;
//then for some
RowRef:=ASheetRef.Rows;
RowRef.Rows[1].RowHeight:=EXCEL_ROW_HEADLINES_HEIGHT;
RowRef.Rows[47].RowHeight:=EXCEL_ROW_HEADLINES_HEIGHT;
RowRef.Rows[14].RowHeight:=EXCEL_ROW_TWO_LINES_HEIGHT;
RowRef.Rows[28].RowHeight:=EXCEL_ROW_TWO_LINES_HEIGHT;
RowRef.Rows[59].RowHeight:=EXCEL_ROW_TWO_LINES_HEIGHT;
RowRef.Rows[72].RowHeight:=EXCEL_ROW_TWO_LINES_HEIGHT;
RowRef.Rows[74].RowHeight:=EXCEL_ROW_TWO_LINES_HEIGHT;
//set font
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Font.Name:=EXCEL_FONT_NAME;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Font.Size:=EXCEL_FONT_SIZE;
RowRef.Rows[1].Font.Bold:= True;
RowRef.Rows[3].Font.Bold:= True;
RowRef.Rows[19].Font.Bold:= True;
RowRef.Rows[20].Font.Bold:= True;
RowRef.Rows[43].Font.Bold:= True;
RowRef.Rows[44].Font.Bold:= True;
RowRef.Rows[45].Font.Bold:= True;
RowRef.Rows[47].Font.Bold:= True;
RowRef.Rows[49].Font.Bold:= True;
RowRef.Rows[58].Font.Bold:= True;
RowRef.Rows[59].Font.Bold:= True;
RowRef.Rows[63].Font.Bold:= True;
RowRef.Rows[64].Font.Bold:= True;
RowRef.Rows[69].Font.Bold:= True;
RowRef.Rows[70].Font.Bold:= True;
RowRef.Rows[84].Font.Bold:= True;
RowRef.Rows[85].Font.Bold:= True;
RowRef.Rows[86].Font.Bold:= True;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].WrapText:=true;
//set alignments
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].VerticalAlignment:=VERTICAL_TOP_ALIGNMENT;
ASheetRef.Range[‘A1:A86’].HorizontalAlignment:=HORIZONTAL_LEFT_ALIGNMENT;
ASheetRef.Range[‘A1:A3’].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[20,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[44,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[47,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[48,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[49,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[59,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[64,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[70,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
ASheetRef.Cells[85,1].HorizontalAlignment:=HORIZONTAL_CENTER_ALIGNMENT;
end;//ExportBalView
//draws borders of cells;
procedure DrawCellBorders(var ASheetRef: Variant);
const
EDGE_LEFT = 7;
EDGE_TOP = 8;
EDGE_BOTTOM = 9;
EDGE_RIGHT = 10;
INNER_VERTICAL = 11;
INNER_HOR = 12;
LINE_STYLE = 1;
LINE_WIDTH = 2;
begin
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[INNER_VERTICAL].Weight:=LINE_WIDTH;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[INNER_VERTICAL].LineStyle:=LINE_STYLE;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[INNER_HOR].Weight:=LINE_WIDTH;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[INNER_HOR].LineStyle:=LINE_STYLE;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[EDGE_TOP].Weight:=LINE_WIDTH;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[EDGE_BOTTOM].LineStyle:=LINE_STYLE;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[EDGE_LEFT].Weight:=LINE_WIDTH;
ASheetRef.Range[CellsToRange(1,1,86,PeriodCount + 2)].Borders[EDGE_RIGHT].LineStyle:=LINE_STYLE;
end;//DrawCellBorders
begin
try
ASheetRef.Name:=’Name’;
ExportTextView(ASheetRef);
DrawCellBorders(ASheetRef);
except
ShowMessage(‘Error’);
end;
end;