Bazaprogram.ru

Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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]

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]

Возвращает или задает ширину всех столбцов в указанном диапазоне. Returns or sets the width of all columns in the specified range. Для чтения и записи, Double. Read/write Double.

Синтаксис Syntax

Expression. ColumnWidth expression.ColumnWidth

выражение: переменная, представляющая объект Range. expression A variable that represents a Range object.

Примечания Remarks

Одна единица измерения ширины столбца равна ширине одного символа в стиле Normal. One unit of column width is equal to the width of one character in the Normal style. Для пропорциональных шрифтов используется ширина знака 0 (ноль). For proportional fonts, the width of the character 0 (zero) is used.

Используйте метод автоподбора для установки ширины столбцов на основе содержимого ячеек. Use the AutoFit method to set column widths based on the contents of cells.

Свойство Width используется для возврата ширины столбца в пунктах. Use the Width property to return the width of a column in points.

Если все столбцы в диапазоне имеют одинаковую ширину, свойство ColumnWidth Возвращает ширину. If all columns in the range have the same width, the ColumnWidth property returns the width. Если столбцы в диапазоне имеют разную ширину, это свойство возвращает значение NULL. If columns in the range have different widths, this property returns null.

Читать еще:  Функция макс в excel

Пример Example

В приведенном ниже примере удваивается ширина столбца A на листе Лист1. The following example doubles the width of column A on Sheet1.

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

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

Читать еще:  Функция обратная логарифму в excel

5. Свойство Rows

Это свойство аналогично свойству Columns, но в отличие от него, возвращает объект, представляющий собой строку листа. С помощью этого свойства Вы также можете изменять внешний вид ячеек листа, изменять шрифт и т.д.

6. Свойства StandartHeight и StandartWidth

Эти свойства позволяют получить значения высоты и ширины ячеек листа «по умолчанию». Свойство доступно только для чтения, т.е. вызов:

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

7. Свойство UsedRange

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

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

8. Свойство Comments

Это свойство возвращает коллекцию комментариев на листе.

удалит второй комментарий из коллекции, а:

добавит в ячейку е5 новый комментарий.

Итак, резюмируем. Сегодня мы узнали: как записать данные в ячейку листа Excel, как прочитать данные из диапазона ячеек, как скопировать таблицу из Delphi в Excel, как быстро экспортировать данные из Excel в Delphi.

В следующий раз займемся работой с ячейками листа, а именно научимся копировать таблицы из Delphi в Excel один-к-одному с сохранением всех цветов, границ ячеек и т.д., а также, попробуем строить диаграммы, которые опять же очень часто требуются при разработке бизнес-приложений.

Программно задать ширину столбца Excel в пикселах (W >

  • Листы Excel
  • Ячейки Excel
  • Разное

Как программно (макросом) задать ширину столбца в пикселах

Вроде бы — элементарное действие. но нет, здесь Microsoft нам усложнил задачу.

Получить ширину столбца в пикселах — не проблема, для этого есть свойство Width:

Но, увы, это свойство доступно только для чтения, — а для назначения ширины столбца нам придётся изменять значение другого свойства — ColumnWidth, которое задаётся отнюдь не в пикселах, а в символах (количестве знаков, которые поместятся в ячейке)

Результат — мы не можем со 100% точностью задать ширину столбца, чтобы она была равна заданному количеству пикселей.

Стал искать решение проблемы на сайте Microsoft — и увидел чудный макрос, который сначала ставит приблизительную ширину, и потом В ЦИКЛЕ подгоняет (увеличивает или уменьшает) значение ширины, до тех пор, пока результат не приблизитс к ожидаемому.

Я и сам пользовался подобным решением — для макроса вставки картинок в Excel, но когда пришла пора реализовать то же самое в универсальной программе для вставки изображений в Excel, понял, что надо искать более удобный способ

К тому же, подбор ширины столбца в цикле — очень медленный способ.

И вот что получилось:

Запустив этот макрос, вы увидите, что установленная ширина столбца почти совпадает с исходной.

Небольшое расхождение обычно некритично (всё-таки, Excel — это не графический редактор, где важна точность)

Еще один макрос — для тестирования применённого способа перевода Width в ColumnWidth:

Результат работы этого макроса:

Желаемая ширина = 3 полученная ширина = 3 ColumnW > Желаемая ширина = 5 полученная ширина = 5,25 ColumnW > Желаемая ширина = 7 полученная ширина = 6,75 ColumnW > Желаемая ширина = 9 полученная ширина = 9 ColumnW > Желаемая ширина = 11 полученная ширина = 11,25 ColumnW > Желаемая ширина = 13 полученная ширина = 12,75 ColumnW > Желаемая ширина = 15 полученная ширина = 15 ColumnW > Желаемая ширина = 17 полученная ширина = 17,25 ColumnW > Желаемая ширина = 19 полученная ширина = 18,75 ColumnW > Желаемая ширина = 21 полученная ширина = 21 ColumnW > Желаемая ширина = 23 полученная ширина = 23,25 ColumnW > Желаемая ширина = 25 полученная ширина = 24,75 ColumnW > Желаемая ширина = 27 полученная ширина = 27 ColumnW > Желаемая ширина = 29 полученная ширина = 29,25 ColumnW > Желаемая ширина = 31 полученная ширина = 30,75 ColumnW > Желаемая ширина = 33 полученная ширина = 33 ColumnW > Желаемая ширина = 35 полученная ширина = 35,25 ColumnW > Желаемая ширина = 37 полученная ширина = 36,75 ColumnW > Желаемая ширина = 39 полученная ширина = 39 ColumnW > Желаемая ширина = 41 полученная ширина = 41,25 ColumnW > Желаемая ширина = 43 полученная ширина = 42,75 ColumnW > Желаемая ширина = 45 полученная ширина = 45 ColumnW > Желаемая ширина = 47 полученная ширина = 47,25 ColumnW > Желаемая ширина = 49 полученная ширина = 48,75 ColumnW > Желаемая ширина = 51 полученная ширина = 51 ColumnW > Желаемая ширина = 53 полученная ширина = 53,25 ColumnW > Желаемая ширина = 55 полученная ширина = 54,75 ColumnW > Желаемая ширина = 57 полученная ширина = 57 ColumnW > Желаемая ширина = 59 полученная ширина = 59,25 ColumnW > Желаемая ширина = 61 полученная ширина = 60,75 ColumnW > Желаемая ширина = 63 полученная ширина = 63 ColumnW > Желаемая ширина = 65 полученная ширина = 65,25 ColumnW > Желаемая ширина = 67 полученная ширина = 66,75 ColumnW > Желаемая ширина = 69 полученная ширина = 69 ColumnW > Желаемая ширина = 71 полученная ширина = 71,25 ColumnW > Желаемая ширина = 73 полученная ширина = 72,75 ColumnW > Желаемая ширина = 75 полученная ширина = 75 ColumnW > Желаемая ширина = 77 полученная ширина = 77,25 ColumnW > Желаемая ширина = 79 полученная ширина = 78,75 ColumnW > Желаемая ширина = 81 полученная ширина = 81 ColumnW > Желаемая ширина = 83 полученная ширина = 83,25 ColumnW > Желаемая ширина = 85 полученная ширина = 84,75 ColumnW > Желаемая ширина = 87 полученная ширина = 87 ColumnW > Желаемая ширина = 89 полученная ширина = 89,25 ColumnW > Желаемая ширина = 91 полученная ширина = 90,75 ColumnW > Желаемая ширина = 93 полученная ширина = 93 ColumnW > Желаемая ширина = 95 полученная ширина = 95,25 ColumnW > Желаемая ширина = 97 полученная ширина = 96,75 ColumnW > Желаемая ширина = 99 полученная ширина = 99 ColumnW > Желаемая ширина = 101 полученная ширина = 101,25 ColumnW > Желаемая ширина = 103 полученная ширина = 102,75 ColumnW > Желаемая ширина = 105 полученная ширина = 105 ColumnW > Желаемая ширина = 107 полученная ширина = 107,25 ColumnW > Желаемая ширина = 109 полученная ширина = 108,75 ColumnW > Желаемая ширина = 111 полученная ширина = 111 ColumnW > Желаемая ширина = 113 полученная ширина = 113,25 ColumnW > Желаемая ширина = 115 полученная ширина = 114,75 ColumnW > Желаемая ширина = 117 полученная ширина = 117 ColumnW > Желаемая ширина = 119 полученная ширина = 119,25 ColumnW > Желаемая ширина = 121 полученная ширина = 120,75 ColumnW > Желаемая ширина = 123 полученная ширина = 123 ColumnW >

  • 25342 просмотра
Читать еще:  Vba excel вставить строку

Комментарии

«Магические константы» в коде Андрея:
12 — ширина в пикселях символа «0» шрифта Calibri, размера 11. Который является дефолтным шрифтом Excel с версии 2007.
7 — ширина в пикселях символа «0» шрифта Arial, размера 10. Который является дефолтным шрифтом Excel до 2007.

Т.е. на разных системах формула может отличаться, в зависимости от версии Excel.

Для установки ширины ячейки, заданной в пикселях (PixelSize — требуемый размер в пикселях):

Для установки высоты ячейки, заданной в пикселях (PixelSize — требуемый размер в пикселях):

Если размеры ячейки необходимо задавать в мм, то предварительно переведите мм в пиксели, используя формулу (mmSize — требуемый размер в мм):

А свойства ActiveCell.Width и ActiveCell.Height возвращают вообще-то не пиксели, а пункты, и чтобы из них получить пиксели, их надо поделить на 0.75

PixelSize должно быть либо целого типа либо вещественное, но округленное до целых, т.к. пиксели д.б. целыми

Игорь, спасибо!
Воспользовался вашим способом.

Алишер, в Excel есть такая возможность, — называется «умные таблицы».
Выделяете таблицу свою (вместе с заголовками), и на ленте (вкладка Главная) нажимаете «Форматировать как таблицу»
После этого, при добавлении новой записи ниже таблицы, Excel автоматически скопирует форматирование предыдущей строки (со всеми выпадающими списками)
PS: работа и вид этих таблиц зависит от версии Excel

Как бы сделать следующее: Есть список (Вверху: шапка, исходные данные, ниже -тело списка, но для заполнения пока доступна одна пустая строка, определенные строки ниже — скрыты), по мере заполнения строки выше, автоматически отображается след. строка (одна) ниже? Наподобие таблиц access. Буду весьма признателен подсказке

Setting columnw >

How can I set the columnwidth in Excel using Delphi?

Similar VB code:

Columns(«A:A»).Select
Selection.ColumnW >
Not sure if I am using late or early binding. I create the Excel object as follows:
Excel := CoExcelApplication.Create;

Premium Content
Premium Content
  • Facebook
  • Twitter
  • LinkedIn
  • https://www.experts-exchange.com/questions/21313637/Setting-columnwidth-in-Excel-using-Delphi.html copy

I’ve done it like this

var
RangeE: ExcelXP.ExcelRange;
begin
ExcelApplication1.Connect;
try
ExcelApplication1.Workbook s.Add(NULL ,0);
RangeE := ExcelApplication1.Range[‘J 1′,’J1’];
RangeE.EntireColumn.W > except
end;
end;

Try something like:

Excel.ActiveSheet.Columns[ ‘A’].Colum nW >
or if you have a sheet object:

Sheet.Columns[‘A’].ColumnW >
Regards, Geo

where RangeE is taken from the example above. This will set the column width to the widest value in each column. Set your range parameters for whatever columns you want to adjust.

I get the following errors:

Excel.ActiveSheet.Columns[ ‘A’].Colum nW > Undeclared identifier : Columns

Sheet.Columns[‘A’].ColumnW > Class does not have a default property

And the following error:

ReportingRange.EntireColum n.W >
Cannot assaign to readonly property.

This procedure has to work:

procedure ExcelSetWidth(FileName: String; Column: integer; Width: integer);
var
Program: Variant;
begin
//Start up Excel.
Program:= CreateOleObject(‘Excel.App lication’) ;
//Open XLS file.
Program.WorkBooks.Open(Fil eName, 3);
//Change width of column.
Program.ActiveSheet.Cells[ 1, Column].ColumnW > //Save changes.
Programa.ActiveWorkBook.Sa ve;
end;

NOTE: Width is measured based on the width of the char ‘0’.

Ссылка на основную публикацию
Adblock
detector