экспорт базы данных в xls с ценой, отформатированной со знаком доллара и запятыми - PullRequest
0 голосов
/ 10 июня 2011

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

Вот мой код:

$pubtable = $_GET["publication"];
$addate = $_GET["adDateHidden"];

$export = mysql_query("SELECT * FROM $pubtable WHERE addate = '$addate' ORDER BY price DESC") or die ("Sql error : " . mysql_error());

$fields = mysql_num_fields($export);

for($i = 0; $i < $fields; $i++){
    $header .= mysql_field_name($export , $i). "\t";
}

while($row = mysql_fetch_row($export)){
    $line = ''; 
    foreach($row as $value)    {   
        if(!isset($value) || trim($value) == "")        {
            $value = "\t";
        } else {
            $value = str_replace('"' , '""' , $value);
            $value = '"' . $value . '"' . "\t";
        }
        $line .= $value;
    }
    $data .= trim($line). "\n";
}
$data = str_replace("\r" , "" , $data);

if(trim($data) == ""){
    $data = "\n(0)Records Found!\n";                        
}

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=".$pubtable."_".$addate.".xls");
header("Pragma: no-cache");
header("Expires: 0");
header ('Content-Transfer-Encoding: binary');
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header ('Cache-Control: cache, must-revalidate');
print "$header\n$data";

Я пытался сделать это

$export = mysql_query("SELECT  CONCAT('$', FORMAT(price, 2)) as fieldalias * FROM $pubtable WHERE addate = '$addate' ORDER BY fieldalias DESC") or die ("Sql error : " . mysql_error());

это форматирует его правильно, но выводит только поле цены и ничего больше.

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Технически, вы не производите электронную таблицу Excel. Вы создаете файл CSV с расширением .xls. В CSV нет механизма добавления форматирования, потому что это просто текст. Вы можете использовать MySQL и / или PHP для форматирования числа во что-то, что выглядит как хорошее значение валюты, но тогда вы уничтожаете его существование как число. Это будет строка, используемая для числа.

Вы должны использовать PHPExcel для создания АКТУАЛЬНОГО файла Excel, в который вы можете добавить все обычные вкусности, которые поддерживает Excel, включая цвета и формулы.

0 голосов
/ 10 июня 2011

Ваш код генерирует текстовый файл (в формате CSV) с расширением XLS. Затем, в Windows с установленным Excel, он может автоматически открываться Excel, несмотря на то, что содержимое является только текстовым файлом. Этот метод не может создать данные со стилем.

Я предлагаю вам использовать OpenTBS , чтобы легко создать файл Excel. OpenTBS - это класс PHP, который может создавать настоящие XLSX, DOCX, ODT, ODS и многое другое ... с использованием шаблонов. Вы просто проектируете шаблон в Excel, а затем объединяете его с данными в PHP, и у вас есть новый XSLS для загрузки непосредственно или в виде файлов, сохраненных на сервере.

...