Экспорт HTML-таблицы в загружаемый Excel с проблемами PHP - PullRequest
0 голосов
/ 29 июня 2011

Итак, у меня возникли некоторые проблемы с экспортом таблиц в Excel.

Он генерируется, но просто появляется первый набор заголовков.

У меня есть такая таблица:

<table>         
        <thead>
            <tr>
                <th colspan="5">Incoming</th>
            </tr>
            <tr>
                <th>From</th>
                <th>To</th>
                <th>Date</th>
                <th>Duration</th>
                <th>Status</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td style="text-align: center;">942367233</td>
                <td style="text-align: center;">-</td>
                <td style="text-align: center;">15-06-2011 08:24</td>
                <td style="text-align: center;">00:00</td>
                <td style="text-align: center;">Abandoned</td>
            </tr>
            <tr>
                <td style="text-align: center;">935761500</td>
                <td style="text-align: center;">1956</td>
                <td style="text-align: center;">15-06-2011 09:20</td>
                <td style="text-align: center;">00:00</td>
                <td style="text-align: center;">Answered</td>
            </tr>
            <tr>
                <td style="text-align: center;">942367233</td>
                <td style="text-align: center;">1957</td>
                <td style="text-align: center;">15-06-2011 09:21</td>
                <td style="text-align: center;">02:16</td>
                <td style="text-align: center;">Answered</td>
            </tr>
        </tbody>
</table>

И форма прямо над столом

<form action="toexcel.php" method="post" target="_blank"
        onsubmit=\'$("#datatodisplay").val($("#data").html())\'>
        <input  type="image" src="/images/icons/Floppy-48x48.png" width="12" height="12">
        <input type="hidden" id="datatodisplay" name="datatodisplay" />
        </form>

А затем, на PHP, который должен генерировать Excel:

header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=ficheroExcel.xls");  
header("Pragma: no-cache");  
header("Expires: 0");
echo $_POST['datatodisplay'];

Но отображать только первый набор заголовков. Я попытался удалить заголовки, и это не сработало.

Что не так?

Ответы [ 2 ]

0 голосов
/ 30 июня 2011

Несмотря на чат, я смог решить эту проблему.Кажется, что escape-символы не были экранированы в javascript, поэтому я должен добавить следующее, решая проблему:

echo str_replace('\"','"', $_POST['datatodisplay']);;
0 голосов
/ 29 июня 2011

Ваш HTML неверен.HTML DTD утверждает, что таблица может содержать только ОДНУ thead и один tfoot, но несколько тегов tbody:

<!ELEMENT table
 (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

Это ваша основная проблема;HTML-код недействителен.

Кроме этого:

  • Вы говорите браузеру (и Excel), что HTML-файл представляет собой файл .XLS, что совершенно неверно.Попробуйте это с .html.
  • Проверьте HTML-страницу таблицы с помощью валидатора HTML W3C и убедитесь, что она проверяет
  • Если вам не нужен макет, используйте файл CSV вместоHTML-файл
...