How to remove line feed in CSV download using PHPExcel - php

I have the data with new lines in database.
for example:
Testing Habit
Testing Habit Testing Habit
Testing Habit Testing Habit Testing Habit
I want to show the data with space instead of new line in csv downloaded file.
Now I am using PHPExcel library to download csv file.
Here is my code:
$output_file_name = "myfile";
$output_file = $output_file_name . ".csv";
$output_file = mb_convert_encoding($output_file, "SJIS", "UTF-8");
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();
$sheet->setCellValue("A1", '"'.str_replace(chr(10), ' ', $info['ModelName']['habits']).'"');
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="'.$output_file.'"');
header('Cache-Control: max-age=0');
header("Pragma: no-cache");
header("Expires: 0");
$objWriter = new PHPExcel_Writer_CSV($objPHPExcel);
$objWriter->setDelimiter(',');
$objWriter->setEnclosure('');
$objWriter->setLineEnding("\r\n");
$objWriter->setSheetIndex(0);
$objWriter->setUseBOM(true);
$objWriter->save('php://output');
How to remove the line feed?

Related

PHPexcel html to excel with images

I write code like this:
require_once(VENDOR . 'phpexcel/PHPExcel/Classes/PHPExcel.php');
$objPHPExcel = new \PHPExcel();
$xlsxname = WWW_ROOT.'excelexport/kontrahent-'.$q->id_kontrahent.'.xlsx';
$table = '<table>'.$_POST['print'].'</table>';
// print_r($_POST);
$file = WWW_ROOT.'NowExcelExport.html';
// Open the file to get existing content
$current = $table;
file_put_contents($file, $current);
$filename = 'excelexport/kontrahent-'.$q->id_kontrahent.'.xls';
// $table = $_POST['table'];
ini_set('zlib.output_compression','Off');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
//the folowing two lines make sure it is saved as a xls file
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename='.$filename);
$objReader = \PHPExcel_IOFactory::createReader('HTML');
$objPHPExcel = $objReader->load($file);
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
Okey, now I input to this code, a html code. This code have images .png/.jpg etc. Export works fine but in my excel files not showing images. Do you have any idea how I can export images?

PHPExcel excel2007 php output with charts

I use latest PHPExcel library for creating .xls, .xlsx files. When i try to output created file like this:
ob_end_clean();
$file = 'test.xls';
header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save('php://output');
exit;
everything is fine until I try to create and output any charts. So i changed my code according to example:
ob_end_clean();
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save(str_replace('.php', '.xlsx', __FILE__));
exit;
This is working, but the file is not downloaded. So i modified code to output created file:
ob_end_clean();
$file = 'test.xlsx';
header('Content-Type: Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save('php://output');
exit;
And this is not working, ends up with ERR_INVALID_RESPONSE.
Also when i store excel file with charts with second code block, it's not compatibile with MS Excel 2016. It says the file is corrupted and the data were replaced or deleted. What am I missing? Thanks a lot.
I figured out one simple solution, first step is to store created .xlsx file, second is to download file with header("Location:"). Redundant files are deleted with array_map function.
array_map('unlink', glob( __DIR__."/*.xlsx"));
$file = 'test.xlsx';
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save($file);
header("Location: $file");

Download Excel file using PHPExcel

I am trying to download excel file using PHPExcel, it's like it download the excel file nicely but the data in excel file is all crap.. it's not what i expected. I passed very basic methods to test my excel sheet data output.
here is the code i'am trying
else if($request->p['type'] == 'excel')
{
$report_type_name = "Graph Survey Report";
$ExcelReport = new ExcelApExport($sections, $group_definition, $questions, $sample_corrections);
$objPHPExcel = $ExcelReport->export($sets, $disp_filter);
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment; "
. escape_for_content_disposition("{$report_name} - {$report_type_name} - " . date("Y-m-d.H.i") . ".xls"));
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
}
also I make object here and call phpexcel methods here
public function export($Sets, $disp_filter)
{
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setTitle("Offic excel Test Document");
$objPHPExcel->getProperties()->setSubject(" Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for XLS, generated using PHP classes.");
//echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');
return $objPHPExcel;
}
please can you suggest me why this crap data is showing up in my file instead of expected data.
thanks in advance
It needs basically
ob_clean();
before saving object.
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
This is the writer for .xlsx files. (See: https://github.com/PHPOffice/PHPExcel/blob/develop/Examples/01simple-download-xlsx.php)
So the right header would be:
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; "
. escape_for_content_disposition("{$report_name} - {$report_type_name} - " . date("Y-m-d.H.i") . ".xlsx")); //.xlsX!
The writer for old .xls-files is:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
See: https://github.com/PHPOffice/PHPExcel/blob/develop/Examples/01simple-download-xls.php
I ran into this problem recently and found another post here that is very helpful if ur still having the problem after using ob_clean()
check this post

PHPExcel - Templates work but mine are corrupt

I am trying to write data to a template and download it.
If i use the sample files as a template, it works but once I use my own it says its corrupt.
Any thoughts?
My code is:
<?php
require_once 'PHPExcel.php';
// Create new PHPExcel object
$fileName = '31docproperties.xlsx'; //location of template for PID type
$fileType = 'Excel2007';
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($fileName);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B4', 'Test Data');
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');
ob_end_clean();
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
?>

PHPExcel problem with importing online/generated csv

I have some problem with PHPExcel where it keep throws couldn't reading (generated) file, here's the code:
include 'PHPExcel/PHPExcel.php';
$rtype = $_REQUEST['rtype'];
// set headers to redirect output to client browser as a file download
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="report_'.$rtype.'.xls"');
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Expires: 0');
//-----Create a reader, set some parameters and read in the file-----
$objReader = PHPExcel_IOFactory::createReader('CSV');
$objReader->setDelimiter(',');
$objReader->setEnclosure('');
$objReader->setLineEnding("\r\n");
$objReader->setSheetIndex(0);
$objPHPExcel = $objReader->load('db_report.php?rtype='.$rtype.'&type=csv');
//-----Create a Writer and output the file to the browser-----
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
already checked db_report.php and it output a csv file, so nothing wrong for this file
You try to load String value 'db_report.php?rtype='.$rtype.'&type=csv' is it not url.
Load first data ex:
$data = file_get_contents('http://domen.com/db_report.php?rtype='.$rtype.'&type=csv');
$objPHPExcel = $objReader->load($data);

Categories