Delphi excel размер ячейки

 
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;


Ice_and_Fire

486 / 298 / 37

Регистрация: 22.06.2011

Сообщений: 929

1

11.01.2012, 14:40. Показов 17097. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Excel 2007

Delphi
1
2
3
4
...
Sheet:=Excel.ActiveWorkbook.ActiveSheet;
...
Sheet.Columns('B:B').ColumnWidth:=30; // А так же Sheet.Columns.item(2).ColumnWidth:=30;

Генерируется ошибка о неверном члене класса. В самом vba работает
Как изменить ширину?



0



378 / 331 / 89

Регистрация: 26.05.2010

Сообщений: 750

11.01.2012, 14:58

2

если правильно помню то так
ExcelWorksheet1.Columns.Range[‘A:A’,EmptyParam].ColumnWidth:=30;



0



486 / 298 / 37

Регистрация: 22.06.2011

Сообщений: 929

11.01.2012, 15:07

 [ТС]

3

Все тот же «член группы не найден»



0



Mawrat

13094 / 5875 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

11.01.2012, 16:15

4

Цитата
Сообщение от Ice_and_Fire
Посмотреть сообщение

Генерируется ошибка о неверном члене класса.

Потому что, когда пишем так:

Delphi
1
  Sheet.Columns('B:B').ColumnWidth := 30;

то здесь круглые скобки Columns(‘B:B’) указывают на то, что Columns — это имя метода в объекте Sheet. А такого метода в объекте типа Excel.Worksheet, в самом деле, нет. Sheet.Columns — это свойство, а не метод.
Чтобы это исправить надо написать так:

Delphi
1
Sheet.Columns['B:B'].ColumnWidth := 30;



1



Zombi_sib

378 / 331 / 89

Регистрация: 26.05.2010

Сообщений: 750

11.01.2012, 16:37

5

вот кусочек кода прекрасно работает и изменяет ширину столбца

Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm16.Button4Click(Sender: TObject);
var Rows, Cols, i,j: integer;
    WorkSheet: OLEVariant;
    FData: Variant;
begin
RunExcel(false, true);
ExcelApp.Workbooks.Open('c:1.xlsx');
WorkSheet:=ExcelApp.ActiveWorkbook.ActiveSheet;
Worksheet.Columns.Range['B:B'].ColumnWidth := 30;
end;

а что у тебя там не работает я не знаю.



0



Содержание

  1. Delphi ширина ячейки excel
  2. Excel в Delphi. Свойства объекта WorkSheet.
  3. 1. Свойство Cells
  4. 2. Свойство Columns
  5. 3. Свойство Name
  6. 4. Свойство Range
  7. 5. Свойство Rows
  8. 6. Свойства StandartHeight и StandartWidth
  9. 7. Свойство UsedRange
  10. 8. Свойство Comments
  11. Excel в Delphi. Работа с объектом Range (диапазон)
  12. 1. Что такое Range и как его получить?
  13. 2. Свойства объекта Excel Range.
  14. Formula
  15. Value
  16. Column
  17. Columns
  18. Comment
  19. Address
  20. 3. Методы объекта Excel Range.
  21. CheckSpelling
  22. PrintPreview
  23. AutoFill
  24. AutoFit
  25. Методы очистки данных диапазона Range
  26. Методы работы с буфером обмена Excel
  27. Merge

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 являются:

  1. Cells — ячейки
  2. Columns — столбцы
  3. Name — название листа
  4. Range — диапазон ячеек
  5. Rows — сроки
  6. StandartHeight — высота строк «по умолчанию»
  7. StandartWidth — ширина столбцов «по умолчанию»
  8. UsedRange — задействованный диапазон ячеек
  9. 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 один-к-одному с сохранением всех цветов, границ ячеек и т.д., а также, попробуем строить диаграммы, которые опять же очень часто требуются при разработке бизнес-приложений.

Источник

Excel в Delphi. Работа с объектом Range (диапазон)

Сегодняшняя статья блога будет целиком посвящена работе с Excel Range или, говоря другими словами — работе с диапазонами ячеек Excel.

Про работу с этими объектами я уже вкратце говорил, а сегодня хотел бы поделиться с вами более полной информацией. Итак, начнем с самого простого.

1. Что такое Range и как его получить?

Согласно официальному определению Microsoft, Range :

представляет собой ячейки, строки, столбцы, набор ячеек, содержащих один или более смежных блоков ячеек, или 3-D диапазон.

Однако это определение не исключает того, что объектом Range может выступать и одна ячейка (Cell) листа. Таким образом, чтобы получить в свое распоряжение объект Range, можно выполнить следующие операции c объектом Excel в Delphi:

Если Вам неудобно в какой-либо ситуации использовать буквенные обозначение ячеек или Вы привыкли до этого момента иметь дело только с отдельными ячейками (Cells), то объект Range можно получить например вот так:

Какой из способов Вы будете использовать в Delphi — не важно, так как результат будет один и тот же. Получив в свое распоряжение диапазон Вы можете использовать его далее, например, для того, чтобы установить вид его границ.

2. Свойства объекта Excel Range.

Рассмотрим основные свойства объекта Range и их применение работе в Excel в Delphi.

Вначале перечислю свойства, которые будут далее рассмотрены в статье.

Свойство Описание
Formula Возвращает или помещает в диапазон формулу
Value Возвращает или устанавливает значение для диапазона
Text возвращает текст из ячейки
Column Возвращает номер первого столбца в первой области, в указанном диапазоне
Columns возвращает объект Range, представляющий собой один столбец из всего диапазона
Comment Возвращает объект Comment для Range. В данном случае Range должен определять одну ячейку.
Address Возвращает реальный адрес диапазона Range

Formula

Возвращает или помещает в диапазон формулу.

Value

Возвращает или устанавливает значение для диапазона.Свойство Value замечательно тем, что с помощью него можно записать в ячейки абсолютно любые данные, особо не задумываясь о формате данных. Например, запишем в ячейки диапазона строку, число типа integer и число типа single: чтобы каждый раз не повторяться в листингах и не писать одни и те же элементы по 100 раз, будем считать, что в переменной Sheet уже содержится ссылка на активный лист (ActiveWorkSheet) активной книги (ActiveWorkBook) Excel (MyExcel)

Как видите, обращение к ячейкам было одно и то же и нигде я не приводил данный к какому-то типу — записал в ячейки всё как есть.

Если Вы хотите записать в весь диапазон Range одно и то же значение, то просто выполните:

и получите одну и ту же строку «Hello World!» в десяти ячейках Excel, но такие операции очень редко необходимы при работе с Excel в Delphi. Зато очень часто необходимо воспользоваться другой стороной свойства Value — прочитать большой объем данных из книги Excel за один прием и получить весь массив данных в Delphi. Операция чтения данных из Excel в Delphi более проста, чем Вам может показаться на первый взгляд. Проведем обратную операцию — прочитаем данные из Excel:

Как видите здесь мы за один прием прочитали данные сразу из трех ячеек Excel и отобразили их в сообщении. Этот прием чтения на порядок более скоростной, чем, например чтение содержимого каждой ячейки (Cells) в отдельности.

Ещё одно простенькое свойство объекта Range — возвращает текст из ячейки. Самое главное отличие от свойства Value Text возвращает string только для чтения и использовать это свойство для чтения большого объема данных, как в предыдущем примере — ни в коем случае нельзя, так как переменная Val вернет значение Null.

Column

Возвращает номер первого столбца в первой области, в указанном диапазоне. Свойство только для чтения.

Чтобы продемонстрировать свойство в действии, давайте создадим такие диапазоны как показано на рисунке:

То есть каждый из диапазонов Range будет содержать по две несвязанные друг с другом области (Area). Причем первая область диапазона Range будет начинаться в столбце А, а первая область второго диапазона (Range 2) — в столбце B.

После того, как диапазоны будут созданы — посмотрим, что вернет нам свойство Column для каждого из диапазонов.

Листинг процедуры создания двух несвязных диапазонов Range следующий:

Так, в случае с первым Range Column вернет нам значение 1, а для второго Range — значение 2.

Columns

В отличие от предыдущего свойства, Columns возвращает не простое число, а объект Range, представляющий собой один столбец из всего диапазона.

Посмотрим как, например, используя это свойство можно изменять столбцы во всем диапазоне Range.

Для демонстрации воспользуемся предыдущим примером, изменим только окончание:

В итоге в каждый из столбцов диапазона должна записаться строка с номером этого столбца, результат представлен на рисунке. Как видите, в цикле все столбцы обработались «насквозь», хотя Range не содержал в себе столбец D.

Возвращает объект Comment для Range. В данном случае Range должен определять одну ячейку.

Для демонстрации свойства не будем заходить в Excel, поработаем с приложением прямо из Delphi. Для этого воспользуемся методом AddComment. То есть сначала запишем комментарий в ячейку, а потом прочитаем его используя свойство Comment:

Address

Возвращает реальный адрес диапазона Range. Например для диапазона ячеек, заданных вот таким образом:

Это свойство удобно использовать, когда Вы оперируете в программе только числовыми значениями (номерами столбцов и строк) и появляется необходимость показать пользователю адреса ячеек из диапазона.

Помимо перечисленных выше свойств к объекту Range применимы все свойства, описанный в статье об изменении внешнего вида ячеек Excel, т.е. borders, color и пр.

3. Методы объекта Excel Range.

Теперь рассмотрим несколько полезных методов, которые могут Вам пригодиться при работе с Excel в Delphi.

Метод Описание
CheckSpelling Проверяет грамматику в выбранном диапазоне и при нахождении ошибок выводит окно для замены
PrintPreview Выводит на экран окно предварительного просмотра перед печатью выбранного диапазона ячеек
AutoFill Автозаполнение диапазона ячеек на основе данных из другого диапазона
AutoFit Изменяет ширину или высоту ячеек диапазона для наилучшего представления данных.
Clear Удаляет все данные из диапазона
ClearComments Удаляет все комментарии в диапазоне Range
ClearContents Удаляет все формулы из диапазона Range
ClearFormats Очищает форматы в диапазоне Range
ClearNotes Очищает все заметки в диапазоне Range
Copy Копирует содержимое диапазона Range в буфер обмена или в другой диапазон
PasteSpecial Специальная вставка диапазона
Cut Вырезает данные и при необходимости вставляет их в новый диапазон
Merge Объединение ячеек диапазона

CheckSpelling

Проверяет грамматику в выбранном диапазоне и при нахождении ошибок выводит окно для замены. Замечательной особенностью этого метода является то, что окно замены появляется даже при скрытом окне Excel, то есть, когда свойство Visible у объекта Excel равно false.

Вызывается метод без каких-либо дополнительных параметров:

PrintPreview

Выводит на экран окно предварительного просмотра перед печатью выбранного диапазона ячеек. Также как и предыдущий метод PrintPreview не имеет дополнительных параметров. Однако при попытке вызвать метод при скрытом окне Excel в лучшем случае возникнет исключительная ситуация, в худшем — зависание Вашего приложения. Так что перед вызовом:

не забывайте включить свойство Visible у Excel:

AutoFill

Автоматическое заполнение диапазона ячеек на основе данных из другого диапазона.

Параметр Тип Описание
Destination Variant представляет собой объект Range уже заполненных ячеек. Эти ячейки должны входить в автозаполняемый диапазон
Type Integer тип автозаполнения (возможные значения см. ниже)

Рассмотрим применение метода на примере.

В результате лист Excel примет следующий вид:

Как видите все столбцы второго диапазона Range заполнились значениями из диапазоны Source.

При использовании этого метода следует иметь в виду, что диапазон-источник (в нашем случае — это source) по одному из измерений должен совпадать с источником назначения. В приведенном примере совпадает размерность по строкам (в обоих диапазонах их шесть). Если размерности диапазонов не совпадают, то возникает исключительная ситуация.

При использовании метода мы использовали одну из констант в параметре TypexlFillDefault = 0. Используя её мы скопировали данные один-к-одному. Дополнительно Вы можете использовать следующие константы при автозаполнении:

Имя Значение Описание
xlFillDefault 0 скопировать данные один-к-одному
xlFillDays 5 копирование дней недели с расширением, т.е., если Вы запишете в ячейку слово «Понедельник» и попробуете провести автозаполнение ещё на 2 строки, то во второй и третьей строке появятся «Вторник» и «Среда»
xlFillCopy 1 копирует все данные и форматы, повторяя при необходимости
xlFillFormats 3 копирует только форматы источника
xlFillMonths 7 копирует названия месяцев. Работает аналогично xlFillDays
xlFillSeries 2 копирует данные с расширением, например 1,2,3 будут при копировании расширены до 4,5,6 и т.д. Также копирует форматы данных
xlFillValues 4 копирует только значения
xlFillWeekdays 6 копирует дни рабочей недели, работает аналогично xlFillDays, но только до пятницы
xlFillYears 8 копирует года. Работает аналогично xlFillDays
xlGrowthTrend 10 копирует числовые значения из источника, расширяя их в предположении, что каждое последующее число представляет собой предыдущее, но умноженное на некоторую величину. Например 1,2 раскопируются в 4, 8, 16 и т.д. Формат данных также копируется
xlLinearTrend 9 копирует числовые значения из источника, расширяя их в предположении, что каждое последующее число представляет собой предыдущее + некоторая величина. Например 1,2 раскопируются в 3, 4, 5 и т.д. Формат данных также копируется

AutoFit

Изменяет ширину или высоту ячеек диапазона для наилучшего представления данных.

Приведет и изменению ширины столбца А таким образом, чтобы число было полностью видно на листе.

Методы очистки данных диапазона Range

Есть несколько различных методов очистки содержимого диапазона Range при работе с Excel в Delphi.

1. Clear

Удаляет все данные из диапазона.

2. ClearComments

Удаляет все комментарии в диапазоне Range.

3. ClearContents

Удаляет все формулы из диапазона Range

4. ClearFormats

Очищает форматы в диапазоне Range

5. ClearNotes

Очищает все заметки в диапазоне Range

Методы работы с буфером обмена Excel

1. Copy

Копирует содержимое диапазона Range в буфер обмена или в другой диапазон.

Попробуем реализовать работу метода следующим образом: заполним столбец А некоторыми значениями, а затем скопируем его сначала в буфер, а потом в столбец Е:

А для того, чтобы вставить данные из буфера обмена существует ещё один метод

2. PasteSpecial

Параметр Тип Описание
Paste Integer определяет какая часть данных диапазона будет вставлена (возможные значения см. ниже)
Operation Integer операция, которая будет выполнена при вставке данных (возможные значения см. ниже)
SkipBlanks boolean True, для того чтобы пустые ячейки из буфера обмена не вставлялись в диапазон назначения. Значение по умолчанию False
Transpose boolean транспонирование столбцов и строк после вставки. По умолчанию устанавливается значение False

При определении параметра Paste следует использовать следующие константы:

Имя Значение Описание
xlPasteAll -4104 Вставка всех данных
xlPasteAllExceptBorders 7 Вставка всего содержимого за исключением вида границ диапазона
xlPasteAllUsingSourceTheme 13 Вставка всего содержимого, используя тему оформления источника
xlPasteColumnWidths 8 Копирует ширину столбцов
xlPasteComments -4144 Вставка комментариев
xlPasteFormats -4122 Вставка форматов данных
xlPasteFormulas -4123 Вставка формул
xlPasteFormulasAndNumberFormats 11 Вставка формул и чисел
xlPasteValidation 6 Вставка проверок
xlPasteValues -4163 Вставка значений
xlPasteValuesAndNumberFormats 12 Вставка значений и чисел

При использовании параметра Operation следует использовать следующие константы:

Имя Значение Описание
xlPasteSpecialOperationAdd 2 К скопированным данным будут добавлены значения из целевых ячеек
xlPasteSpecialOperationDivide 5 Скопированные данные будут разделены на значения в целевых ячейках
xlPasteSpecialOperationMultiply 4 Скопированные данные будут умножены на значения в целевых ячейках
xlPasteSpecialOperationNone -4142 При вставке значений никакие операции не будут применяться
xlPasteSpecialOperationSubtract 3 Из скопированных данных будут вычитаться значения целевых ячеек

Теперь рассмотрим применение метода на примере. В качестве исходных данных возьмем данные из предыдущего примера, но для вставки используем метод PasteSpecial:

После выполнения этой операции все данные вставятся в диапазон Range2, т.к. диапазон до вставки был пуст, то данные скопировались один-к-одному.

3. Cut

Вырезает данные и при необходимости вставляет их в новый диапазон. Метод работает аналогично методу Copy, но с последующим удалением данных из источника.

Merge

Объединение ячеек диапазона.

Для новичков, только начинающих постигать азы работы с excel в Delphi этот метод в какой-то момент становится камнем преткновения :). Дело в том, что очень часто возникает необходимость объединить часть ячеек листа для записи в объединенную область большого количества данных или длинной строки. В Excel есть такой метод Union, который и отвечает за объединение — им-то и пробуют пользоваться многие. А метод Union при вызове из Delphi применительно к диапазону Range вызывает исключительную ситуацию. Про Merge люди либо не знают, либо забывают. А использовать его достаточно просто:

Источник

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Продолжаем копаться в листах Excel и изучать особенности работы с ними. Сегодня мы рассмотри свойства объекта WorkSheet.

Основными свойствами, которые Вы с большой вероятностью будете использовать в своей работе с Excel в Delphi являются:

  1. Cells — ячейки
  2. Columns — столбцы
  3. Name — название листа
  4. Range — диапазон ячеек
  5. Rows — сроки
  6. StandartHeight — высота строк «по умолчанию»
  7. StandartWidth — ширина столбцов «по умолчанию»
  8. UsedRange — задействованный диапазон ячеек
  9. 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 один-к-одному с сохранением всех цветов, границ ячеек и т.д., а также, попробуем строить диаграммы, которые опять же очень часто требуются при разработке бизнес-приложений.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Чтобы формировать
вид документа в процессе его создания, недостаточно только функций записи
информации в ячейки, необходимо также изменять ее визуальные параметры. Самое
простое, с чего можно начать, — изменение ширины столбцов и высоты строк.
Доступ к ширине столбцов можно получить, используя коллекцию Columns. Используя
номер колонки в буквенном или числовом формате и свойство коллекции
ColumnWidth, можно изменить ширину столбца или назначить ее. Определенная ниже
функция, реализованная на Delphi, устанавливает ширину столбца.

Code:

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, устанавливает высоту
строки.

Code:

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;

Like this post? Please share to your friends:
  • Delphi excel пустые строки
  • Delphi excel проверить а не открыт ли уже файл
  • Delphi excel поиск текста
  • Delphi excel поиск по ячейкам
  • Delphi excel открыть один лист