Скачать данные из таблицы HTML, чтобы преуспеть - PullRequest
0 голосов
/ 30 сентября 2010

У меня есть таблица, построенная на 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 и без каких-либо дополнительных библиотек.

Ответы [ 3 ]

3 голосов
/ 30 сентября 2010

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

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

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

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

header("Content-type: application/vnd.ms-excel");
echo "
<table>
    ...
</table>";
2 голосов
/ 30 сентября 2010

Хорошо выводить собственный формат 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;
0 голосов
/ 30 сентября 2010

Вы можете использовать CSV (значения, разделенные запятыми), которые могут быть открыты в 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';         
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...