我设法将查询结果导出到可下载的 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 添加公司 Logo 、更改字体大小、列宽,因为 CSV 是文本文件。因此我们不需要每次将此 csv 导入 excel 时都编辑 xls。
最佳答案
由于 csv 文件只不过是一个带有一些comma seperated v值的文本文件,因此您无法对其进行格式化。正如您已经指出的那样,您想在此处切换到 xls 文件 (Excel)。
你可以查看一些库,比如 PHPExcel ,这应该可以轻松创建和格式化 Excel 文件。
关于php - 格式化查询的 csv 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47388054/