go语言自动化编写word


关键字: word go语言 办公软件 自动化 excel office

背景

近来因为工作需要,经常性要重复地写报告,搞安全的就是苦逼啊。每次都需要人工查这查那,还要复制黏贴。 重复地复制黏贴会比较烦人。所以弄好一份表就自动让机器代替人工黏贴到word文档,自动生成会相对舒服且快速,有什么问题直接修改excel即可。

步骤

我是用go语言进行开发的。
go的版本:14
office使用的是:unioffice库
== 地址:https://github.com/unidoc/unioffice ==

第二个需要用到的库是:docx
==地址:https://github.com/nguyenthenguyen/docx ==

ps:
第一个库没研究透是什么情况,主要用来替换多行内容的。比如我有三个内容需要写进docx,但是只做了一行的标记,替换的时候只会替换第一个内容。那么第二、第三个内容就无法写进去了。这个时候只能用unidoc这个库来写入更多的内容且自动换行。
那么为什么需要第二个库呢,因为第二个库,简单直接,只能根据标记替换。且在页眉替换的时候不影响水印。 简单直接。缺点就是无法找到标记的内容,进行多行写入。

确定流程

其实最好先确定一下程序的处理流程和具体人工处理的步骤,因为偷懒我这里就不提供了,因为我也是画着画着就没有弄了。

编写伪代码

在vscode上编写具体的流程伪代码

编写正式的代码

按照自己的思路,确定好变量、常量、具体的处理流程等等,按照伪代码进行一步一步的代码编写。

最终的代码

package main

import (
	"fmt"
	"log"
	"time"

	"github.com/unidoc/unioffice/document"
	"github.com/unidoc/unioffice/measurement"
	"github.com/unidoc/unioffice/schema/soo/wml"
	"github.com/unidoc/unioffice/spreadsheet"
)
type biaozhi struct {
   
   
	yeMeiTime        string // 页眉的时间编号
	neiRouTime       string // 内容的时间格式
	ipaddr           string // 其实就是告警对象:主要填IP
	tiaomushu        string // 告警的条目数
	gaojingxinxi     string // 告警信息:告警描述
	xitong           string // 被攻击的系统名称
	danwei           string // 被攻击的单位
	chuzhijianyi     string // 处置建议
	lujing           string // 告警中的路径,病毒存在的路径、webshell的路径等
	shijianmingcheng string // 事件名称
	yjShiJianLeiXing string // 应急事件报告中特有的事件类型
	shijianjibie     string // 事件的级别
	loudongmingcheng string // 漏洞预警:漏洞名称
	yxBanBen         string // 漏洞预警:影响版本
	wenjianmingcheng string // 另存为文件的名称
	fengxianmiaoshu  string // 风险验证描述
}

var (
	// Baogao 要打开的报告类型
	Baogao string
	// SaveFile 要打开的报告类型
	SaveFile string
	dataList biaozhi
)

// 1.判断输出的是什么通告
func tonggao() {
   
   
	a, _ := spreadsheet.Open("素材.xlsx")
	excel, err := a.GetSheet("需要填写的资料")
	if err != nil {
   
   
		log.Fatalf("excel打开表错误,错误信息: %s", err)
	}
	defer a.Close()

	SaveFile = excel.Cell("B1").GetString() // 看是什么类型的报告获取字符串。
	switch SaveFile {
   
   
	case "可疑行为":
		Baogao = "可疑行为预警通告.docx"
	case "风险预警":
		Baogao = "安全风险预警通告.docx"
	case "应急预警":
		Baogao = "安全事件应急通告.docx"
	case "漏洞预警":
		Baogao = "安全漏洞预警通告.docx"
	default:
		log.Println("请检查(素材.xlsx)文件(需要填写的资料)表中报告类型是否正确!")
	}

	// 获取相关的数据
	dataList.shijianmingcheng = excel.Cell("B2").GetString()  // 风险预警:获取事件名称
	dataList.shijianjibie = excel.Cell
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值