2010-08-11 8 views
2

Для передачи некоторых данных из excel через php я использую эту функцию для создания меток;PHP to Excel, жирный шрифт

function xls_label($row, $col, $value, $bold) 
{  
    echo pack("ssssss", 0x204, 8 + strlen($value), $row, $col, 0x0, strlen($value)); 
    echo $value; 
} 

Это добавляет ярлык обычного шрифта.

Теперь мне было интересно, что мне нужно добавить к этой функции, чтобы сделать шрифт ярлыка полужирным?


Я не хочу, чтобы использовать любую библиотеку, так как я просто нужна эта одна простая функция.

+4

Я использую pear excel writer, у вас есть много вариантов использования стилей ..http: //pear.php.net/package/Spreadsheet_Excel_Writer –

+0

Поскольку мне просто нужно создать очень простой файл Excel, я не хочу прибегать к использованию библиотеки любого типа. – Thys

+10

Если вы используете форматирование/шрифты, то это уже не очень простой файл Excel. Когда вы начнете заниматься форматированием, вы погружаетесь в мужество формата файла BIFF, и он становится уродливым. Пакет Хаим упоминает, что он очень легкий и работает красиво, но в значительной степени мертв в воде, поддерживая что-либо в Excel 5.0. Попробуйте http://phpexcel.codeplex.com для новой/более новой библиотеки, которая обрабатывает Excel'07 –

ответ

6

Я бы сказал, используя библиотеку, потому что (как сказал Марк Б) «Если вы используете форматирование/шрифты, то это уже не« очень простой »файл Excel».

Вы даже не сказать, что BIFF версии вам нужно, так что я буду считать BIFF5, потому что вы используете этикетки клетки маркер 0x204

Существенный элементом является 0x0 значения в вашей упаковке высказывании:

echo pack("ssssss", 0x204, 8 + strlen($value), $row, $col, 0x0, strlen($value)); 

Вам необходимо создать запись Font xf в «Global Substream Workbook», а затем установить значение 0x0 для идентификатора xf для этой записи шрифта +16.

Вы не указали достаточно своего кода, чтобы определить, где вам нужно добавить новую запись шрифта, но записи шрифтов имеют тип 0x0031. Вы уже должны писать запись по умолчанию (xf = 0), поэтому вам нужно будет изменить этот раздел своего кода, чтобы создать вторую запись шрифта с xf из 1, что означало бы, что ваш 0x0 должен быть 0x11 ,

Для жирного шрифта для этого шрифта требуется значение 0x02BC со смещением 6. Для дальнейшего использования в случае, если вы хотите добавить дополнительный стиль шрифта впоследствии, курсивом требуется битовая маска 0x0002 со смещением 2, а для зачеркивания требуется битовая маска 0x0008 при смещении 2. Смещение 4 указывает на индекс цвета, если вы хотите изменить цвет шрифта, в то время как смещение 8 обозначает надстрочный индекс/индекс, а смещение 10 обозначает тип подчеркивания. Смещения 11, 12 и 14 определяют семейство шрифтов, набор символов и размер имени шрифта, а затем имя самого шрифта.

Вы можете найти полную информацию о всех вариантах на http://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx

Как вы, возможно, начать ценить, это не так просто и понятно, как вы хотели бы верить. Вот почему большинство из нас использует библиотеки при работе со сложным двоичным форматом, а не пытается написать все это самостоятельно.

+0

Что значит offest? – Bongsky

+0

offset == offset: это позиция с начала блока. –

+0

Могу ли я попросить пример о том, как реализовать эту смелую вещь в функции эхо-пакета, пожалуйста, – Bongsky

5

Сообщите вам секрет: создайте таблицу HTML и запишите ее в файл с расширением .XLS. Когда Excel открывает его, он читает форматирование, как IE, но теперь у вас есть электронная таблица. Это означает, что вы можете применить любое форматирование. Соедините это с PHP, и вы - золотой мальчик в отделе веб-разработчиков в течение недели.

+0

Первый; Я знаю об сохранении HTML как .xls hack, но Excel является одним из немногих приложений, конвертирующих html в электронную таблицу, и вы по-прежнему получаете предупреждение о своей неправильной разметке. Во-вторых, Не ответ на мой вопрос. – Thys

+1

Я не знаю, что означает «но Excel является одним из немногих приложений, конвертирующих html в электронную таблицу», но, возможно, вам стоит лучше сформулировать свой вопрос. Это решение действительно позволяет переносить данные с PHP на Excel (или Calc) и жирным шрифтом. Это самый простой способ сделать это без использования какой-либо библиотеки. –

+0

«Но Excel является одним из немногих приложений, конвертирующих html в электронную таблицу», я имею в виду, что, например, Google Docs или OpenOffice не конвертируют/не открывают таблицу html, указанную в документе с расширением .xls. – Thys

1

Я использую следующий формат, я использую все 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"; 
?> 

переменная пост генерируется в некоторых других файлах и представить в этот файл ..

+1

Какое это имеет отношение к вопросу? – BoltClock

+0

@Boltclock Он спросил: «Теперь мне было интересно, что мне нужно добавить к этой функции, чтобы сделать шрифт ярлыка полужирным?» поэтому я сказал, что использую все содержимое html в php-строке и отправляю его на указанный выше код для загрузки файла .xls. Я думаю, что он всегда говорит о ответе на вопрос. Если вы не прочитали его чисто, тогда это было бы похоже только ... – Vijay

Смежные вопросы