dt_automate/wps/safety_word.go

90 lines
3.1 KiB
Go
Raw Normal View History

2025-02-19 18:30:19 +08:00
package wps
import (
2025-02-26 18:58:43 +08:00
"dt_automate/tool"
2025-02-19 18:30:19 +08:00
"log"
2025-02-25 18:36:33 +08:00
"strings"
2025-02-25 20:31:44 +08:00
"time"
2025-02-19 18:30:19 +08:00
2025-02-26 23:15:11 +08:00
"github.com/Esword618/unioffice/document"
"github.com/Esword618/unioffice/schema/soo/wml"
2025-02-19 18:30:19 +08:00
)
2025-02-26 23:15:11 +08:00
func SAFET_Word() {
doc, err := document.Open("temp/temp.docx")
2025-02-19 18:30:19 +08:00
if err != nil {
2025-02-26 23:15:11 +08:00
log.Panic("打开文件失败", err)
2025-02-19 18:30:19 +08:00
}
2025-02-26 23:15:11 +08:00
// defer doc.Close()
2025-02-25 18:36:33 +08:00
// 填充模板中的变量
paragraphs := []document.Paragraph{}
for _, p := range doc.Paragraphs() {
paragraphs = append(paragraphs, p)
}
// This sample document uses structured document tags, which are not common
// except for in document templates. Normally you can just iterate over the
// document's paragraphs.
for _, sdt := range doc.StructuredDocumentTags() {
for _, p := range sdt.Paragraphs() {
paragraphs = append(paragraphs, p)
}
}
2025-02-26 23:15:11 +08:00
log.Println("开始生成安全巡检模板")
2025-02-25 18:36:33 +08:00
for _, p := range paragraphs {
for _, r := range p.Runs() {
if strings.Contains(r.Text(), "{{DATE_A}}") {
2025-02-26 18:58:43 +08:00
Replacetext(r, "{{DATE_A}}", time.Unix(tool.Timestamp("second"), 0).Format("2006年01月02日"))
2025-02-25 20:31:44 +08:00
} else if strings.Contains(r.Text(), "{{HLW_FW_1}}") { //插入互联网防火墙图片
Replaceimg(r, doc, "img/hw_fw1.png")
} else if strings.Contains(r.Text(), "{{HLW_AFC2000_1}}") { //插入互联网流量清洗图片
Replaceimg(r, doc, "img/afc2000_1.png")
} else if strings.Contains(r.Text(), "{{HLW_AFC2000_2}}") { //插入互联网流量清洗图片
Replaceimg(r, doc, "img/afc2000_2.png")
} else if strings.Contains(r.Text(), "{{HLW_TSGZ}}") { //插入互联网态势感知图片
Replaceimg(r, doc, "img/hw_tsgz.png")
} else if strings.Contains(r.Text(), "{{HLW_BLJ}}") { //插入互联网堡垒机图片
// Replaceimg(r, doc, "img/hw_fw1.png")
} else if strings.Contains(r.Text(), "{{ZWW_FW_1}}") { //插入政务网防火墙图片
Replaceimg(r, doc, "img/zww_fw1.png")
} else if strings.Contains(r.Text(), "{{ZWW_TSGZ}}") { //插入政务网态势感知图片
Replaceimg(r, doc, "img/zww_tsgz.png")
} else if strings.Contains(r.Text(), "{{ZWW_BLJ}}") { //插入政务网堡垒机图片
// Replaceimg(r, doc, "img/hw_fw1.png")
2025-02-25 18:36:33 +08:00
} else {
2025-02-25 20:31:44 +08:00
// log.Println("")
2025-02-25 18:36:33 +08:00
}
}
}
2025-02-25 20:31:44 +08:00
// 遍历文档中的表格,替换{{bianliang}} 中的内容
2025-02-25 18:36:33 +08:00
for _, table := range doc.Tables() {
for _, row := range table.Rows() {
2025-02-25 20:31:44 +08:00
for _, cell := range row.Cells() {
2025-02-25 18:36:33 +08:00
var (
b string
p document.Paragraph
k int
)
for k, p = range cell.Paragraphs() {
for _, a := range p.Runs() {
b += a.Text()
}
// log.Println(k)
}
2025-02-25 20:31:44 +08:00
// log.Println(i)
2025-02-25 18:36:33 +08:00
if strings.Contains(b, "{{DATE_B}}") {
2025-02-25 20:31:44 +08:00
log.Println("匹配到模板内容:", b)
2025-02-25 18:36:33 +08:00
for _, h := range cell.Paragraphs()[k].Runs() {
h.ClearContent()
}
cell.Properties().SetVerticalAlignment(wml.ST_VerticalJcCenter)
2025-02-25 20:31:44 +08:00
// log.Println(time.Date(2025, time.February, 25, 0, 0, 0, 0, time.Local).Format("2006年01月02日"))
2025-02-26 18:58:43 +08:00
cell.Paragraphs()[k].AddRun().AddText(time.Unix(tool.Timestamp("second"), 0).Format("2006年01月02日"))
2025-02-25 18:36:33 +08:00
}
2025-02-25 20:31:44 +08:00
// log.Println(b)
2025-02-25 18:36:33 +08:00
b = ""
}
}
}
2025-02-26 18:58:43 +08:00
doc.SaveToFile("大同信创云平台安全运维日报" + time.Unix(tool.Timestamp("second"), 0).Format("20060102") + ".docx")
2025-02-19 18:30:19 +08:00
}