Кто-нибудь знает о методе экспорта определенных полей из базы данных с настраиваемыми заголовками столбцов в Excel из MSQL с использованием PHP?Индивидуальный экспорт PHP Excel
Где есть ресурсы на это?
Кто-нибудь знает о методе экспорта определенных полей из базы данных с настраиваемыми заголовками столбцов в Excel из MSQL с использованием PHP?Индивидуальный экспорт PHP Excel
Где есть ресурсы на это?
Excel с радостью прочитает CSV-файл в виде таблицы. CSV это просто текстовый формат, таким образом, создать какой-нибудь текст и эхо его с соответствующим типом содержимого:
$query = "SELECT col1, col2, col3 FROM table";
$result = mysql_query($query);
$csv = '"First Column Title","Second Column Title","Third Column Title"' . "\n";
while ($row = mysql_fetch_assoc($result)) {
$csv .= '"' . str_replace('"', '""', $row['col1']) . '",';
$csv .= '"' . str_replace('"', '""', $row['col2']) . '",';
$csv .= '"' . str_replace('"', '""', $row['col3']) . '"' . "\n";
}
header("Content-type: application/vnd.ms-excel");
echo $csv;
$ csv. = '' '. Str_replace (' '', '""', $ row ['col1']). '', '; Что находится в' 'меток? – Mike
Майк, я считаю, что он дважды цитирует любые кавычки, которые находятся в полях из-за того, как файлы .csv используют кавычки. – Trevor
Правильно. Так как значения заключены в двойные кавычки, любые двойные кавычки, появляющиеся внутри значения, должны быть экранированы. Формат CSV избегает двойных кавычек, удваивая их, то есть превращая '' 'в' '' ', что и делает код. –
вобще выберите на полях, которые вы хотите, и выводить результаты с полями, разделенными запятыми, и каждый строка на собственной линии. В идеале должно должно быть окружение каждого значения кавычками и addslashes()
, чтобы избежать кавычек в данных.
Вывести результат и сохранить в файл с именем, заканчивающимся на .csv
, и открыть его в Excel.
Использование PHPExcel библиотеки:
// connection with the database
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "database";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
// require the PHPExcel file
require 'Classes/PHPExcel.php';
// simple query
$query = "SELECT username,emailAdress,locationCity FROM users ORDER by id DESC";
$headings = array('User Name', 'EMail Address','City');
if ($result = mysql_query($query) or die(mysql_error())) {
// Create a new PHPExcel object
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle('List of Users');
$rowNumber = 1;
$col = 'A';
foreach($headings as $heading) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading);
$col++;
}
// Loop through the result set
$rowNumber = 2;
while ($row = mysql_fetch_row($result)) {
$col = 'A';
foreach($row as $cell) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
$col++;
}
$rowNumber++;
}
// Freeze pane so that the heading line will not 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="userList.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit();
}
echo 'a problem has occurred... no data retrieved from the database';
Используя PHPExcel, вы можете также добавить форматирование, или создавать рабочие книги с несколькими рабочими листами и т.д.
+1 Для PHPExcel, но имейте в виду, что он использует много ресурсов (ну, много памяти) , – wimvds
@wimvds - Я полностью понимаю ** все ** ограничения PHPExcel ... Я разработчик, и там есть трюки и приемы, которые можно использовать для уменьшения памяти и улучшения скорости. –
http://stackoverflow.com/search?q=generate+ excel + file +% 5Bphp% 5D – deceze
Должен быть формат excel или CSV достаточно хорош? –
должно быть excel unfortunetly ... – Mike