HTMLテーブルをExcelにエクスポートするのに問題があります。これが私が試したものです。
window.open('data:application/vnd.ms-excel,' + encodeURIComponent($('#myTableDiv').html()));
Chrome では驚くほど機能しますが、Internet Explorer では機能しません。URLにデータがある新しいタブに移動するだけです(IE10で試しました)。そこで、IE をチェックしてから、IE ブラウザ用の ActiveXObject メソッドを使用してみました。
var objExcel = new ActiveXObject ("Excel.Application");
しかし、オブジェクトの作成時にエラーが発生し、コンピューターに Excel 2013 がインストールされています。この方法はあまり信頼できないようです。
だから今、私はサーバーサイド言語(JSP)でそれを試しています。
これが私の現在の試みです。
$('.toExcel').click(function(){
$.post('controllers/excel.jsp?tableHTML=' + encodeURIComponent($('#myTableDiv').html()), function(data) {
});
});
そして私のJSP
<!DOCTYPE html>
<%@ page import="java.io.PrintWriter" %>
<%@ page contentType="application/excel" language="java" %>
<%
response.reset();
response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=\"report.xls\"");
PrintWriter op = response.getWriter();
String CSV = request.getParameter("tableHTML");
op.write(CSV);
%>
これには少なくともいくつかの問題があることを私は知っています。
- URL に投稿するとき、ダウンロード プロンプトはありません。
- パラメーターとして収まる HTML は非常に限られています
Chrome でリクエスト URL に移動すると、ファイルがダウンロードされます。IE 10 でリクエスト URL に移動すると、次のエラーが表示されます。
HTML1527: DOCTYPE expected. The shortest valid doctype is "<!DOCTYPE html>".
excel.jsp, line 1 character 1
すべてのブラウザで機能する信頼性の高いソリューションを教えてくれる人はいますか?