HTML таблица в CSV или Excel - PullRequest
1 голос
/ 23 мая 2011

Хорошо, я начинаю немного сходить с ума ...

jQuery Таблица для экспорта в CSV

Я смотрю на эту тему.

Это работает, но вывод делает все по каждой линии, а не по строкам таблицы HTML.Например, у меня есть адрес, который находится в одной ячейке HTML:

1234 Berryman Lane
Atlanta, GA 12345
Unit # 54A

Это будет ТРИ строки при выводе в Excel вместо одной ячейки с возвратами в ней.

Кроме того, насколько я знаю, нет способа удалить HTML, который находится внутри ячеек HTML, ...

Наконец, Excel выдает предупреждение при открытии этого файла.


Что я имею в виду, так это то, что я предпочел бы просто иметь что-то, что может взять большинство внутренних данных в ячейках HTML (не включая HTML внутри ячейки) и скопировать их вCSV.Есть ли что-нибудь, что делает это хорошо в наши дни?


ОБНОВЛЕНИЕ

Ну, я только что нашел лучшую вещь, это довольно прекрасно:

$table = 'myTable';
$file = 'exportFile';

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= "\"" . $row['Field']."\",";
$i++;
}
}
$csv_output .= "\n";

$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= "\"" . $rowr[$j]."\",";
}
$csv_output .= "\n";
}

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;

Я думаю, что это мой хранитель.Он идет в файл CSV без проблем, загружается в Excel без проблем, это моя мечта!

Ответы [ 3 ]

1 голос
/ 23 мая 2011

ну, вы всегда можете использовать ту же разметку в Excel, что и для рендеринга html, если вы используете тип файла .xls, рендеринг таблицы html и измените тип содержимого на «application / vnd.ms-excel», указав имя файладля этого ответа как * .xls, и вы должны иметь лист Excel для использования.

0 голосов
/ 01 октября 2011

Спасибо за все предложения. Как указано в моем отредактированном посте, этот скрипт ниже был отличным решением:

$table = 'myTable';
$file = 'exportFile';

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= "\"" . $row['Field']."\",";
$i++;
}
}
$csv_output .= "\n";

$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= "\"" . $rowr[$j]."\",";
}
$csv_output .= "\n";
}

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;

Я думаю, что это мой хранитель. Он идет в файл CSV без проблем, загружается в Excel без проблем, это моя мечта!

0 голосов
/ 23 мая 2011

Если в данных нет двойных кавычек, вы можете заключить содержимое каждой ячейки в двойные кавычки, чтобы ваши данные выглядели так:

"...","...","..."

Теперь вы можете иметь запятые в данных. Возможно, вам также придется иметь дело с новыми строками и возвратами в данных, возможно, лучше всего удалить их полностью, но это ваше дело.

...