Golang使用Excelize库生成报表的方法与实践
Golang使用Excelize库生成报表的方法与实践 golang excelize 如何为每一页创建页眉,以及如何进行打印页面设置
2 回复
看起来你问的是这个模块:GitHub - qax-os/excelize: Go语言库,用于读写Microsoft Excel™(XLAM / XLSM / XLSX / XLTM / XLTX)电子表格
根据文档,看起来你可以使用 File.SetHeaderFooter 来为每个页面设置页眉。
对于打印页面设置,有 File.SetPageLayout、File.SetPageMargins 及其相关选项。
希望对你有帮助!
更多关于Golang使用Excelize库生成报表的方法与实践的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Excelize中为每一页设置页眉和打印页面配置可以通过以下方式实现:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// 设置页眉
if err := f.SetHeaderFooter("Sheet1", &excelize.FormatHeaderFooter{
DifferentFirst: false, // 首页不同
DifferentOddEven: false, // 奇偶页不同
OddHeader: "&C&\"Arial,Bold\"&14报表标题&A日期: &D",
OddFooter: "&R页码: &P / &N",
EvenHeader: "&C&\"Arial,Bold\"&14报表标题&A日期: &D",
EvenFooter: "&R页码: &P / &N",
}); err != nil {
fmt.Println(err)
return
}
// 设置打印页面
if err := f.SetPageLayout("Sheet1", &excelize.PageLayoutOptions{
Size: excelize.PageLayoutPaperSizeA4, // A4纸张
Orientation: &excelize.PageLayoutOrientationLandscape, // 横向
FirstPageNumber: &[]uint{1}[0], // 起始页码
AdjustTo: &[]uint{100}[0], // 缩放比例
FitToHeight: &[]int{1}[0], // 高度适应
FitToWidth: &[]int{1}[0], // 宽度适应
BlackAndWhite: &[]bool{false}[0], // 黑白打印
Draft: &[]bool{false}[0], // 草稿质量
CellComments: &excelize.PageLayoutCellCommentsEndSheet, // 批注位置
Errors: &excelize.PageLayoutErrorsDash, // 错误显示方式
Scale: &[]uint{100}[0], // 缩放
PageLayoutOption: []excelize.PageLayoutOption{
{Name: "CenterHorizontally", Value: true}, // 水平居中
{Name: "CenterVertically", Value: false}, // 垂直居中
},
}); err != nil {
fmt.Println(err)
return
}
// 设置打印区域
if err := f.SetDefinedName(&excelize.DefinedName{
Name: "_xlnm.Print_Area",
RefersTo: "Sheet1!$A$1:$F$50",
Scope: "Sheet1",
}); err != nil {
fmt.Println(err)
return
}
// 设置打印标题行
if err := f.SetDefinedName(&excelize.DefinedName{
Name: "_xlnm.Print_Titles",
RefersTo: "Sheet1!$1:$1",
Scope: "Sheet1",
}); err != nil {
fmt.Println(err)
return
}
// 设置分页符
if err := f.InsertPageBreak("Sheet1", "A20"); err != nil {
fmt.Println(err)
return
}
// 保存文件
if err := f.SaveAs("报表.xlsx"); err != nil {
fmt.Println(err)
return
}
}
页眉格式代码说明:
&C:居中&L:左对齐&R:右对齐&D:当前日期&T:当前时间&P:当前页码&N:总页数&"字体,样式"&大小:字体设置
打印设置关键参数:
Size:纸张大小,支持A3、A4、Letter等Orientation:方向,Portrait纵向或Landscape横向FirstPageNumber:起始页码AdjustTo:缩放百分比FitToHeight/FitToWidth:适应页面PageLayoutOption:额外选项,如居中、网格线等
分页控制:
InsertPageBreak:在指定位置插入分页符RemovePageBreak:移除分页符GetPageBreaks:获取所有分页符

