【问题标题】:Formatting csv output of query格式化查询的 csv 输出
【发布时间】: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("&amp;", "&lt;", "&gt;", "&quot;", "&apos;" , '');
    $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 postgresql csv


【解决方案1】:

由于 csv 文件只不过是带有一些 comma s 操作的 v 值的文本文件,因此您无法对其进行格式化。正如您已经指出的那样,您想在此处切换到 xls 文件 (Excel)。

您可以查看一些库,例如 PHPExcel,它们应该可以轻松创建和格式化 Excel 文件。

【讨论】:

  • 有一点点格式可以在 CSV 上完成,这就是强制字符串:3,17,"2017-11-20 09:20:17.23255",Some simple string。在 Excel 中打开时,Excel 将按原样显示该时间戳,而不是将其转换为自己的日期格式
  • 我已经安装了 PHPExcel,我应该如何更改代码以便将其导出到 xls?
  • @Scoots:你是对的。我的意思是按照字体样式、字体大小等方式进行格式化。
  • @NemanjaJ.:examples 可能会提供一些见解。尤其是heavily formatted 一个。
  • 是的,这有很大帮助。 tnx
【解决方案2】:

首先,您需要将 CSV 转换为 xls。这篇文章可能会帮助你: csv to excel conversion

然后您可以编辑 xls 的样式: How to format excel file with styles, fonts, colors, tables etc with pure PHP?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2013-07-16
    • 2015-06-07
    • 2017-08-11
    相关资源
    最近更新 更多