Формула / алгоритм для расчета / преобразования ширины столбца Excel в ширину столбца таблицы Word - PullRequest
0 голосов
/ 04 июня 2019

Я ищу формулу, которая может преобразовать ширину столбцов Excel в ширину таблицы Word. Пример: создать простую таблицу в Excel, изменить ширину столбцов. Наконец скопируйте / вставьте его в документ MS Word.

После проверки двух файлов, которые он показывает.

MS Excel:

<x:cols>
    <x:col min="1" max="1" width="3.77734375" customWidth="1" />
    <x:col min="2" max="2" width="10.21875" customWidth="1" />
    <x:col min="3" max="3" width="12.77734375" customWidth="1" />
  </x:cols>

MS Word:

<w:tblGrid>
      <w:gridCol w:w="454" />
      <w:gridCol w:w="1100" />
      <w:gridCol w:w="1380" />
</w:tblGrid>

Может кто-нибудь помочь мне или направить меня в правильном направлении, пожалуйста?

1 Ответ

0 голосов
/ 04 июня 2019

Ширина столбцов Word хранится как двадцатые точки.Эта статья может показаться вам поучительной http://officeopenxml.com/WPtableGrid.php.

В Excel не используется единица измерения, поэтому преобразование 1: 1 будет в лучшем случае затруднительным.Ширина Excel зависит от размера используемого шрифта;Word не будет (если только свойства таблицы не расширены для соответствия содержимому).

С width (Column Width) на https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.column?view=openxml-2.8.1

Ширина столбца, измеренная как числосимволы максимальной ширины цифр чисел 0, 1, 2,…, 9, отображаемые шрифтом обычного стиля.Предусмотрено 4 пикселя отступа полей (по два с каждой стороны), плюс 1 пиксель отступа для линий сетки.

width = Truncate ([{Количество символов} * {Максимальная ширина цифры} + {отступ 5 пикселей}] / {Максимальная ширина разряда} * 256) / 256

[Пример: на примере шрифта Calibri максимальная ширина разряда для шрифта размером 11 точек составляет 7 пикселей (при разрешении 96 точек на дюйм).Фактически, каждая цифра имеет одинаковую ширину для этого шрифта.Поэтому, если ширина ячейки составляет 8 символов, значение этого атрибута должно быть Truncate ([8 * 7 + 5] / 7 * 256) / 256 = 8.7109375.конец примера]

Чтобы преобразовать значение ширины в файле в значение ширины столбца во время выполнения (выраженное в пикселях), используйте этот расчет:

= Усечение (((256 *{width} + Truncate (128 / {Maximum Digit Width})) / 256) * {Maximum Digit Width})

[Пример: при использовании того же примера, что и выше, вычисление будет Truncate (((256* 8.7109375 + усечение (128/7)) / 256) * 7) = 61 пиксель.конец примера]

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

= усечение (({пиксели} -5) / {максимальная ширина цифры} * 100 + 0,5) / 100

[Пример: Используя приведенный выше пример, вычисление будет усечено ((61-5) /7*100+0,5) / 100 = 8 символов.конец примера]

[Примечание: при применении широких границ часть левой / правой границы должна перекрываться с отступом в 2 пикселя с каждой стороны.Широкие границы не влияют на вычисление ширины столбца.конечная заметка]

[Примечание. Когда лист находится в режиме просмотра формул вместо значений, ширина столбца в пикселях удваивается.конечная заметка]

Возможные значения для этого атрибута определяются двойным типом данных XML-схемы W3C.

Следующее также может быть полезно http://polymathprogrammer.com/2010/01/18/calculating-column-widths-in-excel-open-xml/,, который предоставляет код дляделать вычисления в первом уравнении, приведенном выше.

...