powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как получить ColumnWidth ячейки Excel в пикселах?
5 сообщений из 5, страница 1 из 1
Как получить ColumnWidth ячейки Excel в пикселах?
    #32794531
MikeGG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

Кто-нибудь знает, как быстро и красиво получить ColumnWidth ячейки Excel в пикселах в C#? Range.ColumnWidth возвращает то ли в point-ах, то ли в ширинах символов...

Спасибо
...
Рейтинг: 0 / 0
Как получить ColumnWidth ячейки Excel в пикселах?
    #32794592
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ширина в пикселах зависит от разрешения графического контекста устройства, в котором отображается ячейка. Отображаться же она может одновременно в нескольких РАЗНЫХ графических контекстах РАЗНЫХ устройств.
Какой из них тебе нужен?

Когда определишься, смотри Graphics.PageUnit, Graphics.DpiX, Graphics.DpiY
...
Рейтинг: 0 / 0
Как получить ColumnWidth ячейки Excel в пикселах?
    #32795184
MikeGG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Roman, я посмотрел PageUnit...

Не могли бы вы посоветовать стандартный сценарий действий в таком случае:
имеются Width и Height (текстбокса) в координатах PageUnit.Display,
приложение работает с Excel (посредством COM-оберток),
необходимо задать ячейке размеры: Cells[1,1].ColumnWidth = ?
Cells[1,1].RowHeight = ?

Причем, в хэлпе по Excel написано:

RowHeight Property
Returns the height of all the rows in the range specified, measured in points . Returns Null if the rows in the specified range aren’t all the same height. Read/write Variant.

ColumnWidth Property
Returns or sets the width of all columns in the specified range. Read/write Variant.

Remarks
One unit of column width is equal to the width of one character in the Normal style. For proportional fonts, the width of the character 0 (zero) is used.

Use the Width property to return the width of a column in points.
(Но Width - read only)

If all columns in the range have the same width, the ColumnWidth property returns the width. If columns in the range have different widths, this property returns Null.

Заранее благодарен
...
Рейтинг: 0 / 0
Как получить ColumnWidth ячейки Excel в пикселах?
    #32795231
MikeGG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для высоты я нашел такое решение:

private void setRowHeight(int row, int value)
{
Bitmap b = new Bitmap(1,1);
Graphics g = Graphics.FromImage(b);
g.PageUnit = GraphicsUnit.Point;
Point[] pts = new Point[]{new Point(0, value)};
g.TransformPoints(CoordinateSpace.Page, CoordinateSpace.Device, pts);
Cells(row, 1).RowHeight = pts[0].Y;
}

Может есть более красивые решения?

И как быть с шириной, которая в Excel выражется через ширины символов?

Спасибо
...
Рейтинг: 0 / 0
Как получить ColumnWidth ячейки Excel в пикселах?
    #32800095
MikeGG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос отменяется... с кем не бывает :)
Для тех, кто так же глючит: range.SymbolWidth = range.Width / range.ColumnWidth; а далее все просто!

Спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как получить ColumnWidth ячейки Excel в пикселах?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]