Для передачи некоторых данных из excel через php я использую эту функцию для создания меток;
function xls_label($row, $col, $value, $bold ) { echo pack("ssssss", 0x204, 8 + strlen($value), $row, $col, 0x0, strlen($value)); echo $value; }
Это добавляет метку обычного шрифта.
Теперь мне было интересно, что мне нужно добавить к этой функции, чтобы сделать шрифт ярлыка полужирным?
Я не хочу использовать какую-либо библиотеку, так как мне просто нужна эта простая функция.
Я бы сказал, используя библиотеку, потому что (как сказал Марк Б) «Если вы используете форматирование / шрифты, то это уже не« очень простой »файл Excel».
Вы даже не говорите, какую версию BIFF вам нужно, поэтому я буду считать BIFF5, потому что вы используете маркер ячейки метки 0x204
Значимым элементом является значение 0x0
в вашем заявлении пакета:
echo pack("ssssss", 0x204, 8 + strlen($value), $row, $col, 0x0, strlen($value));
Вам нужно будет создать запись Font xf в «Workbook Global Substream», а затем установить значение 0x0 для идентификатора xf для этой записи шрифта +16.
Вы не показываете достаточно своего кода, чтобы определить, где вам нужно добавить новую запись шрифта, но записи шрифтов имеют тип 0x0031. Вы уже должны писать запись по умолчанию (xf = 0), поэтому вам нужно будет изменить этот раздел своего кода, чтобы создать вторую запись шрифта с xf из 1, что означало бы, что ваш 0x0 должен быть 0x11 ,
Для жирного шрифта для этой записи шрифта требуется значение 0x02BC при смещении 6. Для дальнейшего использования, если вы хотите добавить дополнительный стиль шрифта впоследствии, курсив требует битовой маски 0x0002 со смещением 2, а для зачеркивания требуется битмаска 0x0008 со смещением 2 Offset 4 указывает на индекс цвета, если вы хотите изменить цвет шрифта, в то время как смещение 8 обозначает надстрочный индекс / индекс, а смещение 10 обозначает тип подчеркивания. Смещения 11, 12 и 14 определяют семейство шрифтов, набор символов и размер имени шрифта, а затем имя самого шрифта.
Подробную информацию обо всех параметрах можно найти на странице http://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx
Как вы, возможно, начинаете ценить, это не так просто и просто, как вам хотелось бы верить. Вот почему большинство из нас использует библиотеки при работе со сложным двоичным форматом, а не пытается написать все это самостоятельно.
Сообщите вам секрет: создайте таблицу HTML и запишите ее в файл с расширением .XLS. Когда Excel открывает его, он читает форматирование, как IE, но теперь у вас есть электронная таблица. Это означает, что вы можете применить любое форматирование. Соедините это с PHP, и вы – золотой мальчик в отделе веб-разработчиков в течение недели.
Я использую следующий формат, я использую все теги html, как жирный шрифт, шрифт и т. Д.
<?php $fn=$_POST[fname]; header("Content-type: application/csv"); header("Content-Disposition: attachment; filename=$fn.xls"); header("Pragma: no-cache"); header("Expires: 0"); $c=$_POST[con]; print "$c"; ?>
переменная post генерируется в некоторых других файлах и отправляется в этот файл.