学无先后,达者为师

网站首页 编程语言 正文

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

栏目分类
最近更新