Я использую библиотеку PhpSpreadsheet для генерации XLSX.Когда я устанавливаю ширину столбца, я использую эту формулу:
// Maximum Digit Width - default 7 (Calibri, 11)
// 4 (padding) + 1 (gridlines)
// FullDoc: https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/cc802410(v=office.14)
width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}*256)/256
Например:
Column A: 20 (character unit) = 20.7109375 (full width) = 145 px
Column B: 40 = 40.7109375 = 285 px
Все работает правильно, но у меня есть другие вопросы.
Когда я открываю сгенерированный файл XLSX в LibreOffice Calc, ширина столбца отображается в inch !
20.7109375 = 1.60"
40.7109375 = 3.14"
В файле .xlsx:
1-вопрос: Как LibraOffice преобразовывает значение ширины столбца в дюймы?
При открытии на MsExcel:
В обычном режиме:
A и B одинаковые значения примера.
Но вРежим макета страницы:
Столбец A: 1,63 "(156 пикселей)
Столбец B: 3,19 "(306 пикселей)
2 вопроса: Почему ширина пикселя различна для каждого режима?(Столбец A: 145px <> 156px)
3 вопроса: Почему размер дюйма отличается для каждого приложения (Excel, LibreOffice)?(Столбец B: 3.14 "<> 3.19")
Как правило, я хочу создать лист из N столбцов, поэтому сумма ширины всех столбцов равна размеру бумаги (без заполнения).
Извините, мой английский!Я использую Google!