簡體   English   中英

php導出mysql表到excel並創建本地文件,不下載

[英]php export mysql table to excel and create a local file, not download

我有這個運行良好的代碼,它創建了 Excel 文件並發送給我通過瀏覽器下載。

我怎樣才能使這個代碼適應,而不是下載,而是在本地目錄中創建相同的文件?

$con = new mysqli($servername, $username, $password, $dbname);

if ($con->connect_error) {  //error check
    die("Connection failed: " . $con->connect_error);
}
else
{

}


$DB_TBLName = "tblenc"; 
$filename = "excelfilename";  //your_file_name
$file_ending = "xls";   //file_extention

header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=$filename.'.'.$file_ending");  
header("Pragma: no-cache"); 
header("Expires: 0");

$sep = "\t";

$sql="SELECT * FROM $DB_TBLName"; 
$resultt = $con->query($sql);
while ($property = mysqli_fetch_field($resultt)) { //fetch table field name
    echo $property->name."\t";
}

print("\n");    

while($row = mysqli_fetch_row($resultt))  //fetch_table_data
{
    $schema_insert = "";
    for($j=0; $j< mysqli_num_fields($resultt);$j++)
    {
        if(!isset($row[$j]))
            $schema_insert .= "NULL".$sep;
        elseif ($row[$j] != "")
            $schema_insert .= "$row[$j]".$sep;
        else
            $schema_insert .= "".$sep;
    }
    $schema_insert = str_replace($sep."$", "", $schema_insert);
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
    $schema_insert .= "\t";
    print(trim($schema_insert));
    print "\n";
}
?>

刪除文件頂部的標題,而不是打印每一行,而是將其存儲到文件中。

如果文件很小,那么您可以像這樣使用file_put_contents()

$sep = "\t";

$output = '';

$sql = "SELECT * FROM $DB_TBLName";
$resultt = $con->query($sql);
while ($property = mysqli_fetch_field($resultt)) { //fetch table field name
    $output .= $property->name."\t";
}

$output .= "\n";

foreach ($resultt as $row) {  //fetch_table_data
    $schema_insert = "";
    foreach ($row as $field) {
        if (!isset($field)) {
            $schema_insert .= "NULL".$sep;
        } elseif ($field != "") {
            $schema_insert .= $field.$sep;
        } else {
            $schema_insert .= $sep;
        }
    }
    $schema_insert = str_replace($sep."$", "", $schema_insert);
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
    $schema_insert .= "\t";
    // append a new line to our file output
    $output .= trim($schema_insert)."\n";
}

如果你有一個大文件,那么你應該使用fopen()代替。 您可以使用fwrite()將每一行fwrite()保存到一個文件中並節省內存使用量,而不是連接整個輸出。

$fp = fopen('data.csv', 'w');

$output = '';

$sql = "SELECT * FROM $DB_TBLName";
$resultt = $con->query($sql);
while ($property = mysqli_fetch_field($resultt)) { //fetch table field name
    $output .= $property->name."\t";
}

$output .= "\n";
fwrite($fp, $output);

foreach ($resultt as $row) {  //fetch_table_data
    $schema_insert = "";
    foreach ($row as $field) {
        if (!isset($field)) {
            $schema_insert .= "NULL".$sep;
        } elseif ($field != "") {
            $schema_insert .= $field.$sep;
        } else {
            $schema_insert .= $sep;
        }
    }
    $schema_insert = str_replace($sep."$", "", $schema_insert);
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
    $schema_insert .= "\t";
    // append a new line to our file output
    fwrite($fp, trim($schema_insert)."\n");
}

// close file pointer
fclose($fp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM