#php #excel #csv #customization
#php #excel #csv #настройка
Вопрос:
У меня есть следующие данные в 1-м столбце моего файла XLS
<table border="1">
<tr>
<th align="left">First Name</th>
<th align="left">Gender</th>
<th align="left">Nationality</th>
</tr>
<tr>
<td align="left">Mike</td>
<td align="left">M</td>
<td align="left">Singaporean</td>
</tr>
Я хотел бы преобразовать его в файл CSV, поэтому вывод должен быть в файле CSV
First Name Gender Nationality
Mike M Singaporean
Я уже видел https://sourceforge.net/projects/phpexcelreader /
Как этого добиться с помощью пользовательского PHP-скрипта?
Ответ №1:
Получить данные из файла xls — $dataArray Я только что включил функцию экспорта
В контроллере
/** Function that is used to do export functionality
*
* @return Response
*/
public function exportAction(Request $request)
{
$delimiter = '';
if ($request->getMethod() == 'POST') {
/* Form values */
$csvType = $request->request->get('CSVtype');
/* setting the CSV type delimiter */
$delimiter = ($csvType == "colonSep") ? ";" : ",";
/* Ends here */
}
$response = $this->createCsvfile($dataArray, $columnNames, $delimiter);
return $response;
}
/**
* Function that is used to generate csv data
*
* @param Array $dataArray Data array
* @param Strings $columnNames Column names
* @param Int $delimiter Delimiter
*
* @return String
*/
private function generateCsv($dataArray, $columnNames, $delimiter)
{
$delimiter = '"' . $delimiter . '"';
$content = '"' . implode($delimiter, str_replace('"', '', $columnNames)) . '"';
$content .= "n";
foreach ($dataArray as $value) {
$content .= '"' . implode($delimiter, str_replace('"', '', $value)) . '"' . "n";
}
return $content;
}
/**
* To create csv file
* @param array $finalResultArray selected club data
* @param array $columnNames selected columns
* @param String $delimiter delimiter
*
* @return SymfonyComponentHttpFoundationResponse
*/
private function createCsvfile($finalResultArray, $columnNames, $delimiter)
{
$filename = 'export_' . date("Y-m-d") . '_' . date("H-i-s") . '.csv';
$response = new Response();
// prints the HTTP headers followed by the content
$response->setContent(utf8_decode($this->generateCsv($finalResultArray, $columnNames, $delimiter)));
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/csv; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"');
$response->headers->set('Content-Transfer-Encoding', 'binary');
return $response;
}
Комментарии:
1. Привет @missgorge. Похоже, это один из MVC. Не могли бы вы дать мне, пожалуйста, в corePHP?