ユーザーが表示したくない行を単に非表示にするドロップダウンで行をフィルター処理するテーブルがあります。
私がやりたいのは、現在表示されている行のみを CSV にエクスポートすることです。
誰かが前にこのようなことをしたことがありますか? テーブルの行を非表示/表示するためにhide()
andを使用しています。show()
同様の解決策を探している他の人のために、私はついに何かを見つけました。ここにあります。
jQuery.fn.toCSV = function() {
var data = $(this).first(); //Only one table
var csvData = [];
var tmpArr = [];
var tmpStr = '';
data.find("tr:visible").each(function() {
if($(this).find("th").length) {
$(this).find("th").each(function() {
tmpStr = $(this).text().replace(/"/g, '""');
tmpArr.push('"' + tmpStr + '"');
});
csvData.push(tmpArr);
} else {
tmpArr = [];
$(this).find("td").each(function() {
if($(this).text().match(/^-{0,1}\d*\.{0,1}\d+$/)) {
tmpArr.push(parseFloat($(this).text()));
} else {
tmpStr = $(this).text().replace(/"/g, '""');
tmpArr.push('"' + tmpStr + '"');
}
});
csvData.push(tmpArr.join(','));
}
});
var output = csvData.join('\n');
var uri = 'data:application/csv;charset=UTF-8,' + encodeURIComponent(output);
window.open(uri);
}
残念ながら、これを行う簡単なワンショットの方法があるとは思いません。ただし、できること:
Ctrl+;表示されている行のみを選択します。
Ctrl+Cコピー。
新しいシートを開きます。
Ctrl+V貼り付けます。
次に、新しいシートを CSV に保存します。