Я программно читаю и записываю лист Excel, используя исходный код https://www.codeproject.com/articles/13852/basicexcel-a-class-to-read-and-write-to-microsoft, который, в свою очередь, основан на документации формата файла Excel из http://sc.openoffice.org/excelfileformat.pdf* , Первые два байта записи XF являются индексом записи FONT. Это все, что документация может сказать об этом.
Мой вопрос: это индекс с нуля или индекс с 1?
Ниже приведен пример использования, который смутил меня и заставил задуматься над этим вопросом.
Вариант использования: полужирная ячейка
Я создал простой лист Excel: одна ячейка, содержащая текст это жирный шрифт.
Я программно читаю эту таблицу Excel и выгружаю все данные в удобочитаемый формат, используя новые методы dump (), которые я добавил к исходному коду. Я обнаружил, что:
- Моя ячейка связана с записью LABELSST:
<LabelSST rowIdx=0 colIdx=0 xfRecIdx=62 sstRecIdx=0 />
- Эта запись LABELSST относится к записи XF с индексом: 62
- Если это индекс, начинающийся с нуля, запись XF в индексе 62:
<XF fontRecIdx=20 formatRecIdx=0 protect=0x1 align=0x20 rot=0 text=0 usedAttribs=0x8 borderLines=0 color1=0x2000000 color2=0x20c0 />
- Эта запись XF ссылается на запись FONT с индексом: 20
- Если это индекс на основе нуля, запись FONT с индексом 20:
<Font height=220 options=0 colorIdx=9 weight=400 escType=0 uline=0 family=2 charSet=0 name="Calibri" />
- Эта запись FONT имеет вес 400.
Этот шрифт весом 400 равен не что я ожидал. Если содержимое моей ячейки выделено жирным шрифтом, то вес шрифта должен быть 700, согласно документации.
Однако, если запись XF относится к Запись FONT с индексом на основе 1, затем запись FONT с индексом на основе 1: <Font height=220 options=1 colorIdx=8 weight=700 escType=0 uline=0 family=2 charSet=0 name="Calibri" />
И эта запись FONT действительно имеет вес 700 для обозначения жирным шрифтом.
Это сбивает с толку. Я не знаю, должен ли индекс для записи FONT в записи XF считаться с нуля или с 1.