【发布时间】:2015-09-25 20:51:32
【问题描述】:
我正在尝试将 html(blade.php 文件)表保存到 laravel 中的 excel 文件中。 我的 JavaScript 代码
function exportToExcel() {
var htmls = "";
var uri = 'data:application/vnd.ms-excel;base64,';
var 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>';
var base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)))
};
var format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
})
};
htmls = "YOUR HTML AS TABLE"
var ctx = {
worksheet : 'Worksheet',
table : htmls
}
var link = document.createElement("a");
link.download = "export.xls";
link.href = uri + base64(format(template, ctx));
link.click();
}
按钮是
<input type="button" onclick="exportToExcel()" value="Export to Excel">
效果很好。
但是,问题是,它只适用于 Chrome 和 microsoft-office:excel。 不适用于其他浏览器(IE7+、Firefox 等)和 open office 4(open office calc、open office math 等)软件。
我在做什么??如何将其他软件和浏览器添加到我的代码中??
但只显示“YOUR HTML AS TABLE”。而不是我的表格值。
【问题讨论】:
-
它在其他浏览器中以什么方式“不起作用”?错误信息?
-
没有错误信息。如果单击按钮没有动作。如果在 chrome 中工作并在 excel 文件中仅显示您的 HTML 表格在一个单元格中。不是我的表值。
-
您通过 uri 查询字符串发送所有数据,该数据有多大?与其他浏览器相比,chrome 对查询字符串的长度有相当大的限制,这可能是它只能在 chrome 中运行的原因。您最好通过 ajax 请求将表数据发布到控制器并返回文件的 url。
-
我的表有 3 个字段代码是
@foreach($teacher as $teacher)Teacher Mobile td> 类型 {{$teacher->tname}} {{$teacher- >tmobile}} @if($teacher->ttype == 1)班主任
标签: javascript excel laravel-4