質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

8767閲覧

tableの内容を文字コードSJISのcsvでダウンロードしたい

tkck

総合スコア32

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/06/08 05:24

htmlでtableを作成しています。

現在table2csvというプラグインをつかってtableの内容をutf-8でcsvダウンロードできたのですが
このままだとエクセルで開いた際文字化けしてしまうので
sjisかbom付きutf-8に変換したいです。
table2csv.jsのutf-8指定している部分をShift-JISに書き換えたのですがutf-8で
ダウンロードされます。

table2csv.js

/* global jQuery */ (function($) { var options = { /* action='downoad' options */ filename: 'table.csv', /* action='output' options */ appendTo: 'body', /* general options */ separator: ',', newline: '\n', quoteFields: true, excludeColumns: '', excludeRows: '' }; function quote(text) { return '"' + text.replace('"', '""') + '"'; } // taken from http://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to-download-not-through-server function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } function convert(table) { var rows = table.find('tr').not(options.excludeRows); var numCols = rows.first().find("td,th").filter(":visible").not(options.excludeColumns).length; console.log(numCols) rows.each(function() { $(this).find("td,th").filter(":visible").not(options.excludeColumns) .each(function(i, col) { //col = $(col); output += options.quoteFields ? quote(col.text()) : col.text(); console.log(i); if(i != numCols-1) { output += options.separator; } else { output += options.newline; } }); }); return output; } $.fn.table2csv = function(action, opt) { if(typeof action === 'object') { opt = action; action = 'download'; } else if(action === undefined) { action = 'download'; } $.extend(options, opt); var table = this; // TODO use $.each switch(action) { case 'download': var csv = convert(table); download(options.filename, csv); break; case 'output': var csv = convert(table); $(options.appendTo).append($('<pre>').text(csv)); break; } return this; } }(jQuery));

top.html

<script type="text/javascript"> //csvダウンロード $(function(){ $('#downloadCsvBtn').click(function () { // CSV形式に整形 $("#table").table2csv('output', { appendTo: '#out' }); // ファイル名の定義(table.csv) $("#table").table2csv('output', { filename: 'table.csv' }); // CSV出力 $("#table").table2csv(); }); }); </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

table2csvでは出力時の文字エンコーディングを固定でutf-8にしているようです。
csv化した文字列をEncoding.jsでSJIS化してみてはどうでしょう?

参考:JavascriptでTableをCSVにしてみる 後編 - sudo rm -rf

投稿2017/06/08 05:39

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkck

2017/06/08 05:52

ご回答ありがとうございます。 さっそく教えて頂いた方法を試したところ、解決することが出来ました。 詰まっていたので助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問