收费(功能全)
github.com/unidoc/unioffice
免费(不维护,基本够用)
github.com/carmel/gooxml
导入包
go get github.com/carmel/gooxml
基本使用
package main
import (
"github.com/carmel/gooxml/color"
"github.com/carmel/gooxml/document"
"github.com/carmel/gooxml/measurement"
"github.com/carmel/gooxml/schema/soo/wml"
)
func main() {
doc := document.New()
para := docc.AddParagraph()
para.Properties().SetAlignment(wml.ST_JcLeft) // 对齐
para.Properties().SetFirstLineIndent(0.5 * measurement.Inch) // 缩进
para.Properties().Spacing().SetLineSpacing(1.5 * 12 * measurement.Point, wml.ST_LineSpacingRuleAuto) // 行高
run := para.AddRun() // 创建一个新段
run.AddText(text.Content) // 增加文字
run.Properties().SetSize(10) // 字体大小
run.Properties().SetColor(color.RGB(0, 0, 0)) // 字体颜色
run.Properties().SetBold(true) // 加粗
run.Properties().SetHighlight(color.Red) // 突出显示
run.Properties().SetStrikeThrough(true) // 删线
run.Properties().SetUnderline(wml.ST_UnderlineWavyHeavy, color.Black) // 下划线
run.Properties().SetItalic(true) // 斜体
run.Properties().SetFontFamily("黑体") // 字体
// 第三方库没有底纹颜色方法,自定义
SetShading(run, color.RGB(0, 0, 0)) // 底纹颜色
if err := doc.SaveToFile(path); err != nil {
fmt.Println(err)
return
}
}
func SetShading(run document.Run, color color.Color) {
shd := wml.NewCT_Shd()
shd.FillAttr = &wml.ST_HexColor{
ST_HexColorRGB: color.AsRGBAString(),
}
shd.ValAttr = wml.ST_ShdClear
run.X().RPr.Shd = shd
}