我遇到导出csv的问题。问题是:1)我必须将html表导出到csv文件。我可以将csv文件的分隔符更改为分号之类的其他内容。如果表中的值在逗号分隔的同一列下,则在csv表中显示在不同的列中。例如在代码中:“Apple,Banana,Mango”我希望它在同一列中。 2)我的代码不适用于IE,它只适用于mozilla 3)我也希望用户保存csv文件。现在它会自动保存。请找我的代码。任何机构都可以帮助解决任何问题。
小提琴链接:https://jsfiddle.net/anbffh8p/4/
CodeHTML:
<div><a href="#" class="export">Export Table data into Excel</a></div>
代码JS:
function exportTableToCSV(filename) {
alert('inside');
var csvData = [];
var tmpArr = [];
csvData.push("mechanical" + "," + "in process" + "," + "M00001" + "," + "A" + "," + "Test" + "," + "Xyz" + "," + "Apple,Banana,Mango");
csvData.push(tmpArr.join('\n'));
// printObject(tmpArr);
alert('before this');
var output = csvData.join('\n');
csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(output);
$(this)
.attr({
'download': filename,
'href': csvData,
'target': '_blank'
});
alert('done');
}
$(".export").on('click', function (event) {
// CSV
exportTableToCSV.apply(this,['export.csv']);
});
答案 0 :(得分:1)
总结:如果可以,请使用服务器端代码,而不是javascript将csv文件发送给用户。
我必须将html表导出到csv文件。
你有服务器端代码吗?什么是首先产生表格? PHP / C#-Asp净MVC?这在服务器上会容易得多。
您基本上创建了一个包含所有数据的url
- 网址具有最大长度(取决于浏览器,但通常为&lt; 2000字符),因此仅用于少量数据。
我可以将csv文件的分隔符更改为分号之类的其他内容。
是。你自己没有编写代码吗?
csvData.push("mechanical" + "," + "in process" + "," + "M00001" + "," + "A" + "," + "Test" + "," + "Xyz" + "," + "Apple,Banana,Mango");
最简单的改变(但我通常使用var作为分隔符):
csvData.push("mechanical" + ";" + "in process" + ";" + "M00001" + ";" + "A" + ";" + "Test" + ";" + "Xyz" + ";" + "Apple,Banana,Mango");
如果表中的值在逗号分隔的同一列下,则在csv表中它显示在不同的列中。
这是对CSV文件工作方式的误解。它们不只是line.split("'")
。
基本上,在您的单元格周围放置双引号,例如:
Test,Xyz,"Apple,Banana,Mango"
获取引号,使用双引号,例如:
Test,"in ""quotes""",xyz
我的代码不适用于IE,它只适用于mozilla [和铬]
您使用网址功能指定下载:&#34;数据:application / csv&#34; (而不是&#34; href:...&#34;) - 这将由不同的浏览器以不同的方式处理。
它会自动保存
浏览器功能/最终用户特定选项。 FF / GC通常自动保存到下载而不是提示保存。