使用自定义文件路径将HTML表数据保存到csv文件

时间:2017-03-21 14:07:20

标签: javascript jquery html electron

我目前正在使用电子编写应用程序,并且我试图将Html表的内容保存为CSV文件。 我用这种方式尝试了this

let $ = require('jquery')
let fs = require('fs')
var dialog = require('electron').remote.dialog
$('#save-file').on('click', () => {
dialog.showSaveDialog({ filters: [{ name: 'csv', extensions: ['csv'] }]}, function (fileName) {
  if(fileName === undefined){
    console.log("Please give a file name!");
  }else{
    var value = $('#data-table').TableCSVExport({delivery:"value"})
    fs.writeFile(fileName, value, function (err) {
    });
  }
});
})

它几乎满足了我的需求,除了数据都被""所淹没,这不是我想要的。 然后我看到了this。有很多像这样的类似的,但是一旦你点击按钮它们都会自动下载。 我想要的是当单击按钮时,它将显示一个对话框,让用户选择文件路径,然后将文件保存到该位置。 另外,我只需要保存tr(数据),所以排除th(标题) 是否有任何js库可以满足我的需求?

赞赏任何指导!

1 个答案:

答案 0 :(得分:0)

如果您希望用户选择自己的文件位置,则以下代码是使用csv-write-stream npm包的showSaveDialog方法的示例。这是一个代码段,不是复制/粘贴完全正常工作的示例。相关项是文件函数加依赖项:

const { dialog } = require('electron');
const fs = require('fs');
const csvWriter = require('csv-write-stream');

function saveFile(){
    const folderLocation = dialog.showOpenDialog({
        title:"Select Save Location",
        properties: ["openDirectory"]
    });

    let writer = csvWriter()
    writer.pipe(fs.createWriteStream(folderLocation))
    writer.write({hello: "world", foo: "bar", baz: "taco"})
    writer.end()
};

您应该选择使用showOpen或showSave选项来导航文件结构以选择文件夹。

在参考csv文件的处理时,请检查以下npm包:

用于处理CSV的另一个很酷的软件包是handsOnTable,用于在您的电子应用中以excel doc的形式显示它们。