Экспорт HTML table в excel
Доброго всем времени суток, есть работающий скрипт который успешно сохраняет текущий HTML документ в ексель:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.js"></script> <script type="text/javascript"> $(function(){ $('button').click(function(){ var url='data:application/vnd.ms-excel,' + encodeURIComponent($('#tableWrap').html()) location.href=url return false }) }) </script> вызывается так: <button>click me</button> <div id="tableWrap"> <table> <thead> <tr><th>A</th><th>B</th><th>C</th></tr> </thead> <tbody> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> </tbody> </table> </div> Но беда в том что некоторые ячейки с цифрами он распознает как дату, здесь можно что нибудь добавить дабы указать тип ячеек при экспорте как float? Я не силен в javascript потому вынужден обратится к вам, прошу не ругайте сильно. |
Это не excel, это html, который тупо сохраняется с экселевским расширением. Поищи библиотеки для работы с xlsx, но будет непросто. Вдобавок, xlsx не откроется в древних офисах.
|
И что никак нельзя задать параметры для сохранения?
|
параметры? нужно конвертировать
|
нашел замечательный скрипт, но снова таки не знаю как задать тип ячеек флоат:
<script type="text/javascript"> var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,' , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>' , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) } , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} window.location.href = uri + base64(format(template, ctx)) } })() </script> <h1>tableToExcel Demo</h1> <p>Exporting the W3C Example Table</p> <input type="button" onclick="tableToExcel('testTable', 'W3C Example Table')" value="Export to Excel"> <table id="testTable" summary="Code page support in different versions of MS Windows." rules="groups" frame="hsides" border="2"><caption>CODE-PAGE SUPPORT IN MICROSOFT WINDOWS</caption><colgroup align="center"></colgroup><colgroup align="left"></colgroup><colgroup span="2" align="center"></colgroup><colgroup span="3" align="center"></colgroup><thead valign="top"><tr><th>Code-Page<br>ID</th><th>Name</th><th>ACP</th><th>OEMCP</th><th>Windows<br>NT 3.1</th><th>Windows<br>NT 3.51</th><th>Windows<br>95</th></tr></tbody></table> </body> </html> Мож кто подскажет? |
Вопрос закрыт, решение нашел сам: заменить точку на запятую при выводе данных, и все норм =)
|
предложенные методы работают, НО возникают случаи когда браузер к примеру google chrome возвращает "Опаньки".
у меня сложилось впечатление, что сконвертированный из html таблицы файл excel весит более 2 МБ, то возникает это исключение. Есть ли действительно такие ограничения или проблема в другом? |
Цитата:
|
Есть ли возможность вывести файл в кодировке windows-1251?
|
Цитата:
|
Часовой пояс GMT +3, время: 23:48. |