const path = require('path'); const fs = require('fs') const csv = require('csv-parser') const prompt = require('electron-prompt'); const createCsvWriter = require('csv-writer').createObjectCsvWriter; const { app, BrowserWindow } = require('electron'); const { ipcMain } = require('electron') function createWindow() { // 创建浏览器窗口 let win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: true, preload: path.join(__dirname, 'preload.js') } }) win.webContents.openDevTools() // 打开开发者工具 // 加载index.html文件 win.loadFile('index.html'); } app.on('ready', createWindow); ipcMain.on('parse-csv', (event, path) => { const results = [] fs.createReadStream(path) .pipe(csv()) .on('data', (data) => { results.push(data) }) .on('end', () => { event.reply('csv-data', results) }) }) // 保存数据到csv文件 ipcMain.on('save2csv', (event, path, data) => { // 保存数据到路径中 // 如果数据为空,直接返回 if (data.length === 0) { return; } // 从第一个数据对象中提取字段名 const headers = Object.keys(data[0]).map(key => ({id: key, title: key})); const csvWriter = createCsvWriter({ path: path, header: headers }); csvWriter.writeRecords(data).then(() => { }); }) ipcMain.on('get-file-list', (event, dirPath) => { console.error('Will read directory: ', dirPath); fs.readdir(dirPath, (err, files) => { if (err) { console.error('Error reading directory: ', err); event.reply('file-list-error', err); } else { event.reply('file-list-data', files); } }); }); ipcMain.on('open-newlv-prompt', (event, arg) => { prompt({ title: 'Prompt', label: '请输入关卡id:', value: '', inputAttrs: { type: 'text' }, type: 'input' }) .then((r) => { if(r === null) { console.log('user cancelled'); } else { console.log('result', r); event.reply('prompt-newlv-reply', r); } }) .catch(console.error); }) ipcMain.on('open-newinst-prompt', (event, arg) => { prompt({ title: 'Prompt', label: '请输入实例id:', value: '', inputAttrs: { type: 'text' }, type: 'input' }) .then((r) => { if(r === null) { console.log('user cancelled'); } else { console.log('result', r); event.reply('prompt-newinst-reply', r); } }) .catch(console.error); })