Php 如何给出文件的路径?

Php 如何给出文件的路径?,php,excel,Php,Excel,您好,我想在本地文件夹中以excel格式保存文件。为此,我正在创建一个api,它将被安排在每晚调用,并将数据保存在文件中 我的尝试是: class SaveExcel { function SaveExcel() { } function saveData() { $file_result = ""; $database = new Database(Constants::DBHOST, Constants::D

您好,我想在本地文件夹中以excel格式保存文件。为此,我正在创建一个api,它将被安排在每晚调用,并将数据保存在文件中

我的尝试是:

    class SaveExcel
{

    function SaveExcel()
    {
    }

    function saveData()
    {
        $file_result = "";
        $database = new Database(Constants::DBHOST, Constants::DBUSER, Constants::DBPASS, Constants::DBNAME);
        $dbConnection = $database->getDB();

        date_default_timezone_set('Asia/Kolkata');
        $date = date('m/d/Y h:i:s a', time());

        $DB_TBLName = "location"; //MySQL Table Name
        $filename = "LocationHistory(" . $date . ")";         //File Name

//create MySQL connection
        $stmt = $dbConnection->prepare("Select * from $DB_TBLName");
        $stmt->execute();

        $columnHeader = '';
        $columnHeader = "loc_id" . "\t" . "user_id" . "\t" . "address" . "\t" . "date_time" . "\t";

        $setData = '';

        while ($rec = $stmt->FETCH(PDO::FETCH_ASSOC)) {
            $rowData = '';
            foreach ($rec as $value) {
                $value = '"' . $value . '"' . "\t";
                $rowData .= $value;
            }
            $setData .= trim($rowData) . "\n";
        }

          //  file_put_contents('history/' . $filename, $setData);

       return ucwords($columnHeader)."\n".$setData."\n";

        }
    }
?>
由此,我得到的输出为:

"Loc_id\tUser_id\tAddress\tDate_time\t\n\"118\"\t\"1\"\t\"19.166488899999997\"\t\"72.8510805\"\t\"16, Aarey Rd, Jay Prakash Nagar, Goregaon East, Mumbai, Maharashtra 400063, India\"\t\"2018-03-03 18:05:45\"\n\"119\"\t\"1\"\t\"19.165215999999997\"\t\"72.8509167\"\t\"MU Chambers, Jay Prakash Nagar, Goregaon West, Mumbai, Maharashtra 400063, India\"\t\"2018-03-03 18:22:14\"\n\"120\"\t\"1\"\t\"19.1651942\"\t\"72.85087469999999\"
现在我想将这些数据以excel格式保存在本地文件夹中

我该怎么做

请帮忙。。多谢各位

编辑:

这段代码运行良好。。现在我只想给出文件的路径。现在它被保存在项目目录下,我想把它保存在另一个目录下。我该怎么办

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$rowCount = 1;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, 'Employee');
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, 'Address');
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, 'Date Time');

$rowCount++;

while($row = $stmt->FETCH(PDO::FETCH_ASSOC)){
    $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $user_name);
    $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['address']);
    $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, $row['date_time']);
    $rowCount++;
}


$current_date = preg_replace('/\s+/', '', $date);
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$name = '/path/to/folder/xyz.xlsx';
$objWriter->save($user_name.$current_date.'.xlsx');

return 'File Saved';

这里显示的是一个TSV(制表符分隔值)字符串,Excel可以读取该字符串,但它不是完整的Excel电子表格(例如,不能有颜色等)。这对于许多应用程序来说已经足够好了,任何读取TSV的应用程序(从Notepad++到LibreOffice)都可以读取它,这是一个优势


但是,如果您想要创建实际的Excel文件,则要困难得多。有一些库可以做到这一点,比如这个开源库:

您需要在代码中添加excel类型的标题

$filename = date('m/d/Y h:i:s a', time());

header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=$filename.xls");  
应用程序/xls
使用excel 2007。所以,如果excel中出现错误,您可以将其更改为
application/vnd.openxmlformatsofcedocument.spreadsheetml.sheet

换句话说,它是一个很好的插件,可以自定义您的excel输出


希望这对你有帮助

此语句应位于函数
标题(“内容类型:应用程序/xls”)中
标题(“内容类型:application/vnd.openxmlformats of cedocument.spreadsheetml.sheet”)为什么?因为您必须设置要下载的内容类型。您的代码将不会下载该文件。又为什么呢?浏览器不知道将下载什么文件。因此需要添加
标题(“内容配置:附件;文件名=$filename.xlsx”)
就像我的第一条评论一样,将它放在函数的
$objWriter->save($filename.'.xlsx')之前$objWriter->save($filename.'.xlsx')至`$objWriter->保存('php://output');`. 抱歉,我的语言不好。请尝试将
$objWriter->save()
代码更改为以下内容:
$objWriter->save(str_replace(uu FILE_uu,'folder_path/'。$user_name.$current_date..xlsx',u FILE_u))
您可以根据需要更改
文件夹路径
此处有人问了一个类似的问题,有一个相关的库:您好,您应该避免在得到一些答案后从根本上更改问题详细信息,这会让以后查看此页面的人感到困惑。如果你有一个无关的问题,你可以问另一个。在任何情况下,我认为您现在想要的是修改
保存
函数中的路径,即您需要放置所需的整个路径,而不仅仅是文件名;但是这个dosent work@YnhockeyWhat确切地说不起作用?/history看起来像是一个奇怪的存储东西的地方,而且很可能你的应用程序没有权限写入该文件夹。尝试使用相对路径,或者先获取绝对路径,然后附加到它(大多数大型项目都是这样做的).如果不起作用,请另问一个问题。