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") }