Golang采用OpenXML标准写Word文档
Git路径:https://github.com/ErmaiSoft/GoOpenXml
参考代码
package main
import (
"fmt"
"github.com/ErmaiSoft/GoOpenXml/word"
)
func main() {
titleFont := word.Font{Family: "微软雅黑", Size: 28, Bold: true, Color: "CC0000"}//字体
normalFont := word.Font{Family: "宋体", Size: 10.5, Bold: false, Space: true, Color: "000000"}
normalBoldFont := word.Font{Family: "宋体", Size: 10.5, Bold: true, Space: true, Color: "000000"}
normalLine := word.Line{Height: 1.5, Rule: word.LineRuleExact}//行高、行间距
subTitleFont := word.Font{Family: "微软雅黑", Size: 15, Bold: true, Color: "000000"}
subTitleLine := word.Line{Rule: word.LineRuleAuto, Height: 1.5}
contentFont := word.Font{Family: "宋体", Size: 10.5, Bold: false, Color: "000000"}
contentLine := word.Line{Rule: word.LineRuleAuto, FirstLineChars: 2, Height: 1.5}//行高、行间距、首行缩进
docx := word.CreateDocx()
docx.AddParagraph([]word.Paragraph{
{
F: titleFont,
L: word.Line{After: 0.8, Rule: word.LineRuleAuto},
T: []word.Text{
{T: "会议纪要", F: &titleFont},
},
Rect: []*word.DrawRect{
{W: float64(docx.PageSize.W - docx.PageSize.L - docx.PageSize.R), H: 1, PH: 0, PV: 16, T: "line", C: "CC0000"},
{W: float64(docx.PageSize.W - docx.PageSize.L - docx.PageSize.R), H: 0.25, PH: 0, PV: 17, T: "line", C: "CC0000"},
},
},
{
F: normalFont,
L: normalLine,
T: []word.Text{
{T: "时间"},
{T: " | 2021-02-02 15:30", F: &normalBoldFont},
},
},
{
F: normalFont,
L: normalLine,
T: []word.Text{
{T: "地点"},
{T: " | 二楼会议室", F: &normalBoldFont},
},
},
{
F: normalFont,
L: normalLine,
T: []word.Text{
{T: "应到"},
{T: " | 25 人", F: &normalBoldFont},
{T: " 实到", F: &normalFont},
{T: " | 22 人", F: &normalBoldFont},
{T: " 参会率", F: &normalFont},
{T: " | 88%", F: &normalBoldFont},
},
},
{
F: normalFont,
L: normalLine,
T: []word.Text{
{T: "出席"},
{T: " | 张三、李四、王五", F: &normalBoldFont},
},
},
{
F: normalFont,
L: normalLine,
T: []word.Text{
{T: "缺席"},
{T: " | 麻六", F: &normalBoldFont},
},
},
{
F: normalFont,
L: normalLine,
T: []word.Text{
{T: "列席"},
{T: " | 周吴", F: &normalBoldFont},
},
},
{
F: normalFont,
L: normalLine,
T: []word.Text{
{T: "主持人"},
{T: " | 李总", F: &normalBoldFont},
},
},
{
F: word.Font{Family: "宋体", Size: 10.5, Color: "000000"},
L: word.Line{Height: 1.5, After: 1, Rule: word.LineRuleAuto},
T: []word.Text{
{T: "记录人"},
{T: " | 张三", F: &normalBoldFont},
},
Rect: []*word.DrawRect{
{W: float64(docx.PageSize.W - docx.PageSize.L - docx.PageSize.R), H: 1, PH: 0, PV: 8, T: "line", C: "CC0000"},
}},
{
F: subTitleFont,
L: subTitleLine,
T: []word.Text{
{T: "会议议题", F: &subTitleFont},
},
},
{
F: contentFont,
L: contentLine,
T: []word.Text{
{T: "第一段文字",
F: &contentFont},
},
},
{
F: contentFont,
L: contentLine,
T: []word.Text{
{T: "第二段文字。",
F: &contentFont},
},
},
{
F: contentFont,
L: contentLine,
T: []word.Text{
{T: "第三段文字。",
F: &contentFont},
},
},
})
err := docx.WriteToFile("D:/Dev/Demo/Word/word_test.docx")
if err != nil {
fmt.Println(err)
}
}