#drupal #utf-8 #export-to-excel #export-to-csv
#друпал #utf-8 #экспорт в excel #экспорт в csv #drupal
Вопрос:
Я использую следующие 2 функции для экспорта данных из таблицы с именем eco_customers в файл Excel
но у меня проблема с арабскими символами, они отображаются поврежденными, как я могу изменить кодировку, чтобы исправить проблему с арабскими символами в файле Excel
function cleanData(amp;$str) {
$str = preg_replace("/t/", "\t", $str);
$str = preg_replace("/r?n/", "\n", $str);
if(strstr($str, '"'))
$str = '"' . str_replace('"', '""', $str) . '"';
}
function customer_export(){
$filename = "cutomers_data_" . date('Ymd') . ".xls";
header("Content-Disposition: attachment; filename="$filename"");
header("Content-Type: application/vnd.ms-excel, charset=UTF-8; encoding=UTF-8");
$flag = false;
$result = db_query("SELECT name, arabic_name, phones, fax, address, country, city, email, website, registration_no FROM eco_customers ") or die('Query failed!');
while(false !== ($row = db_fetch_array($result))) {
if(!$flag) {
// display field/column names as first row
echo implode("t", array_keys($row)) . "rn";
$flag = true;
}
array_walk($row, 'cleanData');
echo implode("t", array_values($row)) . "rn";
}
}
Комментарии:
1. почему бы вам не использовать модуль просмотра drupal и внесенный модуль views_export_xls.
2. поскольку я не экспортирую представление или узел, я просто экспортирую таблицу данных
Ответ №1:
Я использовал библиотеку PHPExcel, и теперь у меня все работало нормально
function customer_export(){
require_once('Classes/PHPExcel.php');
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle('List of Customers');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Name')
->setCellValue('B1', 'Arabic Name')
->setCellValue('C1', 'Phone')
->setCellValue('D1', 'Fax')
->setCellValue('E1', 'Address')
->setCellValue('F1', 'Country')
->setCellValue('G1', 'City')
->setCellValue('H1', 'Email')
->setCellValue('I1', 'Website')
->setCellValue('J1', 'Registration Number');
$result = db_query("SELECT name, arabic_name, phones, fax, address, country, city, email, website, registration_no FROM eco_customers ") or die('Query failed!');
// Loop through the result set
$rowNumber = 2;
while ($row = db_fetch_array($result)) {
$col = 'A';
foreach($row as $cell) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
$col ;
}
$rowNumber ;
}
// Freeze pane so that the heading line won't scroll
$objPHPExcel->getActiveSheet()->freezePane('A2');
// Save as an Excel BIFF (xls) file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="customers_data_' . date('Ymd') . '.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit();
}
Комментарии:
1. Это довольно нестандартный способ экспорта всех ваших данных. Если бы вы создали представление (просмотр страницы и ленты). это станет намного проще для вас.
2. Я предполагаю, что @vikasNaranje речь идет о модуле ViewsDataExport drupal.org/project/views_data_export