繁体   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