Php 如何给出文件的路径?
您好,我想在本地文件夹中以excel格式保存文件。为此,我正在创建一个api,它将被安排在每晚调用,并将数据保存在文件中 我的尝试是:Php 如何给出文件的路径?,php,excel,Php,Excel,您好,我想在本地文件夹中以excel格式保存文件。为此,我正在创建一个api,它将被安排在每晚调用,并将数据保存在文件中 我的尝试是: class SaveExcel { function SaveExcel() { } function saveData() { $file_result = ""; $database = new Database(Constants::DBHOST, Constants::D
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看起来像是一个奇怪的存储东西的地方,而且很可能你的应用程序没有权限写入该文件夹。尝试使用相对路径,或者先获取绝对路径,然后附加到它(大多数大型项目都是这样做的).如果不起作用,请另问一个问题。