日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Electron導出附件的三種方式

作者:dfdlife 更新時間: 2022-07-16 編程語言

文章目錄

  • 使用showSaveDialog方法
    • 1、導出附件(網絡路徑)
    • 2、導出附件(html)為 word文件
    • 3、導出附件(二進制blob文件)為 xls文件

使用showSaveDialog方法

1、導出附件(網絡路徑)

import { remote } from 'electron';
import fs from 'fs';
import request from 'request';

/**
 * @description: 下載附件
 * @param {Object} param 附件對象
 */ 
private downloadFile(param: any) {
	remote.dialog.showSaveDialog({
		defaultPath: param.filename,
		filters: [
			{ name: 'Custom File Type', extensions: [param.extension] }
		]
	}).then((res: any) => {
		const readUrl = param.filepath;
		const writeUrl = res.filePath;
		const wstream = fs.createWriteStream(writeUrl);
		request(readUrl).pipe(wstream);
		wstream.on('finish', () => {
			(this as any).opertResult(5, '文件保存成功!');
		});
	});
}

2、導出附件(html)為 word文件

import { remote } from 'electron';
import fs from 'fs';
import '@/utils/word-export-blob';

/**
* @description: 下載附件
*/
private downloadFile() {
	remote.dialog.showSaveDialog({
		defaultPath: 'XXX登記表.doc',
		filters: [
			{
				name: 'Custom File Type',
				extensions: ['doc']
			}
		]
	}).then((res: any) => {
		const writeUrl = res.filePath;
		const temp = ($('#export-info-template') as any).wordExport();
		const render = new FileReader();
		render.readAsText(temp);
		render.onloadend = () => {
			const writeData = render.result;
			const wstream = fs.createWriteStream(writeUrl);
			wstream.write(writeData);
			wstream.end();
			wstream.on('finish', () => {
				(this as any).opertResult(5, '文件保存成功!');
			});
		};
	});
}

3、導出附件(二進制blob文件)為 xls文件

/**
* @description: 下載附件
* @param {Object} param 附件流
*/
private downloadFile(param: any) {
	remote.dialog.showSaveDialog({
		defaultPath: '電話本.xls',
		filters: [
			{
				name: 'Custom File Type',
				extensions: ['xls']
			}
		]
	}).then((res: any) => {
		const writeUrl = res.filePath;
		const temp = new Blob([param], {
			type: 'application/vnd-excel;charset=utf-8'
		});
		const render = new FileReader();
		render.readAsArrayBuffer(temp);
		render.onloadend = () => {
			const writeData = Buffer.from(render.result || '');
			const wstream = fs.createWriteStream(writeUrl);
			wstream.write(writeData);
			wstream.end();
			wstream.on('finish', () => {
				(this as any).opertResult(5, '文件保存成功!');
			});
		};
	});
}

原文鏈接:https://blog.csdn.net/dfdlife/article/details/123494266

欄目分類
最近更新