ユーザーがExcelで頻繁に開くHTMLで生成されたレポートがあります。これは、content-typeを使用することで十分にシンプルに提供されます。ただし、最近、しわのポップアップが表示されました。これらのレポートの一部は、動的なグループ化/並べ替えを実行するために多くのJavascriptを使用しており、ユーザーはこの「完成した」バージョンのレポートをExcelにダウンロードしたいと考えています。私はそのために機能しているJavascript関数を持っています:
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">';
template += '<head></head>';
template += '<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]; });
};
var ctx = {worksheet: name || 'Worksheet', table: daBody};
window.location.href = uri + base64(format(template, ctx));
IEがwindow.btoaをサポートしていないことがわかったので、それに対処しましたが、Excelでデータを開こうとすると、次のエラーが発生します。
システムコールに渡されるデータ領域が小さすぎます。
メッセージにもかかわらず、これはURIのbase64文字列が長すぎることが原因であると思います(過去にIEが極端に長いURLを受け入れないことを確認し、これが接続されていると信じています)。
それで、IEでこれに使用できる代替方法はありますか?