我将在ASP.NET应用程序(VB.NET代码隐藏)中添加一个部分,允许用户将数据作为Excel文件返回给它们,我将根据数据库数据生成该文件.虽然有几种方法可以做到这一点,但每种方法都有其自身的缺点.将如何您返回的数据?我正在寻找尽可能干净和简单的东西.
如果我们在nodeJS服务器上,我们可以编写一个头,设置一个mime类型,并发送它:
res.header("Content-Disposition", "attachment;filename="+name+".csv");
res.type("text/csv");
res.send(200, csvString);
Run Code Online (Sandbox Code Playgroud)
并且由于标题,浏览器将为命名的csv文件创建下载.
当在浏览器中生成有用的数据时,将其置于CSV文件中的一种解决方案是使用ajax,将其上传到服务器,(可选择将其保存在那里)并让服务器使用这些头将其发送回csv在浏览器下载回来.
但是,我希望100%的浏览器解决方案不涉及与服务器的乒乓.
所以在我看来,可以打开一个新窗口并尝试使用META标记等效设置标题.
但是这在最近的Chrome中对我不起作用.
我确实得到一个新窗口,它包含csvString,但不作为下载.
我想我希望在底部标签中下载或在底部标签中下载一个空白的新窗口.
我想知道元标记是否正确或是否还需要其他标记.
有没有办法让这项工作没有将其强加给服务器?
用于在浏览器中创建CSV的JsFiddle(不工作 - 输出窗口但无法下载)
var A = [['n','sqrt(n)']]; // initialize array of rows with header row as 1st item
for(var j=1;j<10;++j){ A.push([j, Math.sqrt(j)]) }
var csvRows = [];
for(var i=0,l=A.length; i<l; ++i){
csvRows.push(A[i].join(',')); // unquoted CSV row
}
var csvString = csvRows.join("\n");
console.log(csvString);
var csvWin = window.open("","","");
csvWin.document.write('<meta name="content-type" content="text/csv">');
csvWin.document.write('<meta name="content-disposition" content="attachment; filename=data.csv"> ');
csvWin.document.write(csvString);
Run Code Online (Sandbox Code Playgroud) 我如何将数组转换为JavaScript对象数组.
例如,我有一个数组作为
data = [
["fruits","frozen","fresh","rotten"],
["apples",884,494,494],
["oranges",4848,494,4949],
["kiwi",848,33,33]
]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为名称值对.
例如,结果集合中的第一个对象将是
{"fruits": "apple", "frozen": 884, "fresh": 494, "rotten": 494}
Run Code Online (Sandbox Code Playgroud)
等等剩下的数据.
我正在寻找一个库来生成excel文件.它不仅仅是关于输出csv或某些行,而是关于一个库,它也可以更容易地进行一些基本的格式化,如标题行,更改颜色和字体大小.
服务器有很多excel生成库,但我找不到更多关于如何自己编写的例子.有一个图书馆朝着这个方向前进:http: //jordiburgos.com/post/2014/excellentexport-javascript-export-to-excel-csv.html 但它更多的是基于html中的表生成excel.此外,它不包括我提到的更高级的主题.