【发布时间】:2018-05-03 10:31:23
【问题描述】:
我设法将我的查询结果导出到一个可下载的 csv,但我可以格式化这个 csv 输出吗?例如具有不同的字体大小、列宽。或者我可以把它变成xls文件吗?在格式化方面也需要帮助。
$connect = pg_connect($link);
$random = $_POST['random'];
$query = "SELECT nivelacija.broj_nivelacije, nivelacija.vezni_dokument, roba.sifra, roba.naziv, nivelacija_stavka.kolicina, nivelacija_stavka.pdv, nivelacija.datum_nivelacije, nivelacija_stavka.stara, nivelacija_stavka.nova, nivelacija_stavka.marza, nivelacija_stavka.nova - nivelacija_stavka.stara as razlika , nivelacija_stavka.kolicina * (nivelacija_stavka.nova - nivelacija_stavka.stara) as zaduzenje
from (select * from nivelacija where datum_nivelacije='$random') nivelacija
LEFT JOIN nivelacija_stavka ON nivelacija.nivelacija_id = nivelacija_stavka.nivelacija_id
LEFT JOIN roba on nivelacija_stavka.roba_id = roba.roba_id
ORDER BY nivelacija.nivelacija_id DESC;";
$resultID = pg_query($connect, $query) or die("Greska1. ");
$num_column = pg_num_fields($resultID);
$csv_header = '';
for($i=0;$i<$num_column;$i++) {
$csv_header .= "" . pg_field_name($resultID,$i) . "*";
}
$csv_header .= "\n";
$csv_row ='';
while($row = pg_fetch_row($resultID)) {
for($i=0;$i<$num_column;$i++) {
$csv_row .= "" . $row[$i] . "*";
}
$csv_row .= "\n";
}
function stripInvalidXml($OriginalString) {
$NekiKarakteriZaZamenu = array("&", "<", ">", "\"", "'" ,'"');
$KarakteriKojiMenjaju = array("&", "<", ">", """, "'" , '');
$ZamenjenString = str_replace($NekiKarakteriZaZamenu, $KarakteriKojiMenjaju, $OriginalString);
return $ZamenjenString;
}
/* Download as CSV File */
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename=nivelacija.csv');
echo $csv_header . $csv_row;
exit;
?>
这可行,但我只是想要一种将其格式化为 xls 的方法,这样我就可以通过 php 添加公司徽标、更改字体大小、列宽,因为 CSV 是文本文件。所以我们不需要每次将这个csv导入excel时都编辑xls。
【问题讨论】:
-
你应该尝试使用一些 php 库来生成 excel 文件...比如 exceljs github.com/guyonroche/exceljs
标签: php excel postgresql csv