您好我想在我的本地文件夹中以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';
答案 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的插件
希望这会对你有所帮助。