Скачать данные из таблицы HTML, чтобы преуспеть

У меня есть таблица, построенная на PHP, которая отображает результаты из таблицы MySQL.

Вот так:

$sql = mysql_query("SELECT * FROM survey");

            echo "<table border='1'>
            <tr>
            <th>Question 1</th>
            <th>Question 2</th>
            <th>Question 3</th>
            <th>Question 4</th>
            <th>Question 5</th>
            <th>Question 6</th>
            <th>Question 7</th>
            <th>Question 8</th>
            <th>Question 9</th>
            <th>Question 10</th>
            <th>Question 11</th>
            <th>Question 12</th>
            <th>Question 13</th>
            <th>Question 14</th>
            <th>eMail</th>
            </tr>";

            while ($row = mysql_fetch_array($sql))
            {
                echo "<tr>";
                echo "<td>" . $row['Question1'] . "</td>";
                echo "<td>" . $row['Question2'] . "</td>";
                echo "<td>" . $row['Question3'] . "</td>";
                echo "<td>" . $row['Question4'] . "</td>";
                echo "<td>" . $row['Question5'] . "</td>";
                echo "<td>" . $row['Question6'] . "</td>";
                echo "<td>" . $row['Question7'] . "</td>";
                echo "<td>" . $row['Question8'] . "</td>";
                echo "<td>" . $row['Question9'] . "</td>";
                echo "<td>" . $row['Question10'] . "</td>";
                echo "<td>" . $row['Question11'] . "</td>";
                echo "<td>" . $row['Question12'] . "</td>";
                echo "<td>" . $row['Question13'] . "</td>";
                echo "<td>" . $row['Question14'] . "</td>";
                echo "<td>" . $row['eMail'] . "</td>";              
            }
            echo "</table>";

Что я хочу сделать, это вывести эту таблицу в файл Excel, без какого-либо исходного кода или табличных тегов. Есть ли способ, которым я могу сделать это? Я был перегружен информацией в Интернете и не совсем уверен, что мне нужно.

Если возможно, я бы предпочел сделать это только с PHP и без каких-либо дополнительных библиотек.

 nikc.org30 сент. 2010 г., 16:22
Ознакомьтесь с программой PEAR для работы с электронными таблицами Excelpear.php.net/package/Spreadsheet_Excel_Writer Он должен делать то, что вам нужно.

Ответы на вопрос(3)

разделенные запятыми), которые могут быть открыты с помощью Excel:

while ($row = mysql_fetch_array($sql))
{
  echo '"'. $row['Question1'] . '";';
  echo '"'. $row['Question2'] . '";';
  echo '"'. $row['Question3'] . '";';
  echo '"'. $row['Question4'] . '";';
  echo '"'. $row['Question5'] . '";';
  echo '"'. $row['Question6'] . '";';
  echo '"'. $row['Question7'] . '";';
  echo '"'. $row['Question8'] . '";';
  echo '"'. $row['Question9'] . '";';
  echo '"'. $row['Question10'] . '";';
  echo '"'. $row['Question11'] . '";';
  echo '"'. $row['Question12'] . '";';
  echo '"'. $row['Question13'] . '";';
  echo '"'. $row['Question14'] . '";';
  echo '"'. $row['eMail'] . '"\n';         
}
 10922179330 сент. 2010 г., 16:06
Вы знаете, какой PHP я использую, когда я это делаю?
Решение Вопроса

используя свой скрипт PHP (т.е. PHP выводит файл .xls), или вы хотите, чтобы он генерировал вывод HTML, который вы можете скопировать / вставить в файл Excel без потери форматирования?

Если первое, посмотрите вэтот отличный инструмент

Если вы просто хотите, чтобы он генерировал HTML, который вы можете скопировать / вставить в Excel, при условии, что ваша таблица правильно отформатирована (и из вашего исходного кода, похоже, вам нужно добавить </ tr> в конце вашего while цикл), то вы должны быть в состоянииперетащите его

В качестве альтернативы, Excelдолжен будьте достаточно умны, чтобы распознавать таблицы HTML, если в нем нет тега <html>.Эта статья объясняет процесс, но, по сути, вы можете отправить файл Excel (согласно первому предложению "изящный инструмент") всего лишь:

header("Content-type: application/vnd.ms-excel");
echo "
<table>
    ...
</table>";
 Mark Baker30 сент. 2010 г., 16:33
@TaraWalsh Посмотрите в каталоге / Tests загрузки PHPExcel примеры использования библиотеки
 stevendesu30 сент. 2010 г., 16:29
Для его установки достаточно скопировать содержимое / Classes в любое место на вашем сайте. После этого вам потребуется ("PHPExcel.php") и создайте новый PHPExcel () (это класс, поэтому просто $ myObject = new PHPExcel ()). Вы можете изменить ячейки с помощью $ myObject-> setCellValue ('A1', "value");
 10922179330 сент. 2010 г., 16:23
Привет, Стивен, я скачал «отличный инструмент» :), потому что я хочу использовать свой PHP-скрипт для вывода файла Excel, но я немного растерялся, что делать с ним дальше. Какие-нибудь советы?
 stevendesu30 сент. 2010 г., 16:30
Посмотрите на /Tests/01simple.php образец листа Excel.

очему есть библиотеки для него. CSV, с другой стороны, прост, и Excel может это прочитать.

$filePath = sys_get_temp_dir() . '/test.csv';
$file = fopen($filePath, '-w');

while (false !== ($row = mysql_fetch_array($sql)))
{
  fputcsv($file, $row);
}

// rewind both pointers
mysql_data_seek($sql, 0);
fseek($file, 0);

// add headers
$rowForHeaders = mysql_fetch_array($sql);
fputcsv($file, array_keys($rowforHeaders));

fclose($file);


// to send the file via the http response
header('Content-type: application/vnd.ms-excel');
header('Content-disposition: attachment; filename="mytable.csv"');
header('Content-length: '.filesize($filePath));
print file_get_contents($filePath);
exit;
 stevendesu30 сент. 2010 г., 16:08
В соответствии сgreggriffiths.org/webdev/both/excel, вы можете просто вывести таблицу HTML с правильным заголовком и Excel прочитает ее
 cssyphus16 нояб. 2012 г., 23:46
@prodigitalson Фантастическое решение, именно то, что мне нужно. Спасибо за публикацию. Кстати, фантастический ник. Хотел бы я +2.
 Mark Baker30 сент. 2010 г., 16:32
Excel умеет читать HTML, но выдает предупреждение при загрузке файла.
 10922179330 сент. 2010 г., 16:15
Привет, я получаю следующие ошибки при запуске вышеуказанного .... Предупреждение: fopen (C: \ Users \ TaraW \ Desktop) [function.fopen]: не удалось открыть поток: нет ошибки в .. Предупреждение: fseek () ожидает, что параметр 1 будет ресурсом, задан логический тип .... Предупреждение: fputcsv () ожидает, что параметр 1 будет ресурсом, задан логический тип .... Предупреждение: fclose () ожидает, что параметр 1 будет ресурсом, задан логический тип ...
 prodigitalson30 сент. 2010 г., 16:09
Этого я не знал!
 prodigitalson30 сент. 2010 г., 16:18
PHP должен иметь доступ для записи в каталог / файл ... По умолчанию он не должен иметь этого доступа к вашему рабочему столу. попробуйте использовать временную директорию вашей системы ... вы можете получить это в PHPsys_get_temp_dir(), Я обновил мой пример ...

Ваш ответ на вопрос