Files
go-dockit/document/examples/simple/main.go
2025-04-16 16:12:33 +08:00

151 lines
4.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"fmt"
"github.com/landaiqing/go-dockit/document"
"log"
)
func main() {
// 创建一个新的Word文档
doc := document.NewDocument()
// 设置文档属性
doc.SetTitle("示例文档")
doc.SetCreator("FlowDoc库")
doc.SetDescription("这是一个使用go-dockit库创建的示例文档")
// 添加一个标题段落
titlePara := doc.AddParagraph()
titlePara.SetAlignment("center")
titleRun := titlePara.AddRun()
titleRun.AddText("FlowDoc示例文档")
titleRun.SetBold(true)
titleRun.SetFontSize(32) // 16磅
titleRun.SetFontFamily("黑体")
// 添加一个普通段落
para1 := doc.AddParagraph()
para1.SetAlignment("left")
para1.SetIndentFirstLine(420) // 首行缩进0.3厘米
run1 := para1.AddRun()
run1.AddText("这是一个使用go-dockit库创建的示例文档。该库提供了一种简单的方式来生成Word文档支持段落、表格、列表、图片等元素。")
// 添加一个带样式的段落
para2 := doc.AddParagraph()
para2.SetAlignment("left")
para2.SetIndentFirstLine(420)
para2.SetSpacingAfter(200) // 段后间距
run2 := para2.AddRun()
run2.AddText("这个段落演示了不同的文本样式:")
// 添加不同样式的文本
para2.AddRun().AddText("粗体").SetBold(true)
para2.AddRun().AddText("、")
para2.AddRun().AddText("斜体").SetItalic(true)
para2.AddRun().AddText("、")
para2.AddRun().AddText("下划线").SetUnderline("single")
para2.AddRun().AddText("、")
para2.AddRun().AddText("红色文本").SetColor("FF0000")
para2.AddRun().AddText("、")
para2.AddRun().AddText("黄色高亮").SetHighlight("yellow")
// 添加一个标题
headingPara := doc.AddParagraph()
headingPara.SetSpacingBefore(400)
headingPara.SetSpacingAfter(200)
headingRun := headingPara.AddRun()
headingRun.AddText("表格示例")
headingRun.SetBold(true)
headingRun.SetFontSize(28) // 14磅
// 添加一个表格
table := doc.AddTable(3, 3)
table.SetWidth(8000, "dxa") // 约14厘米宽
table.SetAlignment("center")
// 设置表头
headerRow := table.Rows[0]
headerRow.SetIsHeader(true)
// 填充表头单元格
headerRow.Cells[0].AddParagraph().AddRun().AddText("产品名称").SetBold(true)
headerRow.Cells[1].AddParagraph().AddRun().AddText("数量").SetBold(true)
headerRow.Cells[2].AddParagraph().AddRun().AddText("单价").SetBold(true)
// 填充表格数据
table.Rows[1].Cells[0].AddParagraph().AddRun().AddText("产品A")
table.Rows[1].Cells[1].AddParagraph().AddRun().AddText("10")
table.Rows[1].Cells[2].AddParagraph().AddRun().AddText("¥100.00")
table.Rows[2].Cells[0].AddParagraph().AddRun().AddText("产品B")
table.Rows[2].Cells[1].AddParagraph().AddRun().AddText("5")
table.Rows[2].Cells[2].AddParagraph().AddRun().AddText("¥200.00")
// 添加一个分页符
doc.Body.AddPageBreak()
// 添加一个标题
listHeadingPara := doc.AddParagraph()
listHeadingPara.SetSpacingBefore(400)
listHeadingPara.SetSpacingAfter(200)
listHeadingRun := listHeadingPara.AddRun()
listHeadingRun.AddText("列表示例")
listHeadingRun.SetBold(true)
listHeadingRun.SetFontSize(28) // 14磅
// 创建一个项目符号列表
bulletListId := doc.Numbering.CreateBulletList()
// 添加列表项
listItem1 := doc.AddParagraph()
listItem1.SetNumbering(bulletListId, 0)
listItem1.AddRun().AddText("这是第一个列表项")
listItem2 := doc.AddParagraph()
listItem2.SetNumbering(bulletListId, 0)
listItem2.AddRun().AddText("这是第二个列表项")
listItem3 := doc.AddParagraph()
listItem3.SetNumbering(bulletListId, 0)
listItem3.AddRun().AddText("这是第三个列表项")
// 创建一个数字列表
numberListId := doc.Numbering.CreateNumberList()
// 添加列表项
numListItem1 := doc.AddParagraph()
numListItem1.SetNumbering(numberListId, 0)
numListItem1.AddRun().AddText("这是第一个数字列表项")
numListItem2 := doc.AddParagraph()
numListItem2.SetNumbering(numberListId, 0)
numListItem2.AddRun().AddText("这是第二个数字列表项")
numListItem3 := doc.AddParagraph()
numListItem3.SetNumbering(numberListId, 0)
numListItem3.AddRun().AddText("这是第三个数字列表项")
// 添加页眉并同时添加页眉引用
header := doc.AddHeaderWithReference("default")
headerPara := header.AddParagraph()
headerPara.SetAlignment("right")
headerPara.AddRun().AddText("FlowDoc示例文档 - 页眉")
// 添加页脚并同时添加页脚引用
footer := doc.AddFooterWithReference("default")
footerPara := footer.AddParagraph()
footerPara.SetAlignment("center")
footerPara.AddRun().AddText("第 ")
footerPara.AddRun().AddPageNumber()
footerPara.AddRun().AddText(" 页")
// 保存文档
err := doc.Save("./document/examples/simple/example.docx")
if err != nil {
log.Fatalf("保存文档时出错: %v", err)
}
fmt.Println("文档已成功保存为 example.docx")
}