如何提供文件的路径?

时间:2018-03-05 10:36:50

标签: php excel

您好我想在我的本地文件夹中以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';

2 个答案:

答案 0 :(得分:1)

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

但是,如果要创建实际的Excel文件,则要困难得多。有一些库可以做到这一点,就像这个开源的库:https://github.com/PHPOffice/PhpSpreadsheet

答案 1 :(得分:0)

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

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

header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=$filename.xls");  

application/xls工作< excel 2007。因此,如果在Excel上获得错误,您可以将其更改为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

换句话说,PHPExcel是一个很好的自定义输出excel的插件

希望这会对你有所帮助。