diff --git a/周新忠学习笔记/4.4/4.4笔记.md b/周新忠学习笔记/4.4/4.4笔记.md new file mode 100644 index 0000000..1e60a66 --- /dev/null +++ b/周新忠学习笔记/4.4/4.4笔记.md @@ -0,0 +1,356 @@ +## Excelize + +#### 样式结构体 excelize.Style{} + +Border 边框相关配置 + +Fill 背景填充 + +Font 字体设置 + +Alignment 对齐配置 + +TextRotation 文字旋转 + +NumFmt 预定义数字格式索引 + +DecimalPlaces 强制指定小数位数 + +CustomNumFmt 自定义格式字符串 + +Protection 单元格保护 + +NegRed 负数显示红色 + +#### 整体显示选项 excelize.ViewOptions{} + +ShowRowColHeader(false) 隐藏行列号 + +ShowGridLines(false) 关闭网格显示 + +ShowZeros(false) 隐藏0值 + +ZoomScale(int)设置缩放比例 + +DefaultGridColor(16进制字符串)更改网格颜色 + +#### Table结构体 excelize.Table{} + +Range 指定表格范围 + +Name 表格内部唯一key + +StyleName 配色方案 + +ShowColumnStripes 是否隔列换色 + +ShowRowStripes 是否隔行换色 + +ShowFirstColumn 是否突出第一列 + +ShowLastColumn 是否突出最后一列 + +ShowHeaderRow 是否显示表头行 + +#### 窗格选项 excelize.Panes{} + +Freeze 是否冻结 + +Split 是否拆分 + +YSplit 从第几行拆分 + +XSplit 从第几列拆分 + +TopLeftCell 拆分后右下角窗口的起始单元格 + +ActivePane 默认激活哪个窗格 + +Selection 光标默认停留在哪一格 + +#### 图表选项 excliez.Chart + +Type 图表类型 Col柱状图 Line折线图 Pie 饼状图 Scatter 散点图 + +Series 数据来源 + +Format 设置格式 + +Dimension 表格大小 + +Legend 图例 + +Title 标题 + +VaryColors 是否给同一系列图形上色区分(饼图必选) + +XAxis 设置横坐标轴 + +YAxis 设置纵坐标轴 + +PlotArea 设置绘图区 + +Fill 设置背景 + +Border 设置边框 + +ShowBlankAs 遇到空格如何处理 + +BubbleSize 气泡图中的气泡大小 + +HoleSize 甜甜圈图中的空洞大小 + +Order 层级,相当于z-index + +。。。。。。。。。。。。剩余见图 + +部分代码如下: + +```go +func ExcelCalculate() { + file := excelize.NewFile() + file.SetSheetName("Sheet1", "成绩单") + data := [][]interface{}{ + {"学号", "班级", "数学", "英语", "语文", "总分", "平均分"}, + {1, "一班", 98, 90, 86}, + {2, "一班", 88, 94, 85}, + {3, "一班", 79, 90, 95}, + {4, "一班", 92, 90, 91}, + {5, "一班", 95, 77, 93}, + {6, "二班", 90, 97, 75}, + {7, "二班", 86, 89, 99}, + {8, "二班", 97, 90, 78}, + {9, "二班", 90, 90, 90}, + {10, "二班", 94, 83, 91}, + {"总分"}, + {"平均分"}, + } + for i, row := range data { + startCell, _ := excelize.JoinCellName("B", i+2) + file.SetSheetRow("成绩单", startCell, &row) + } + fType := excelize.STCellFormulaTypeShared + area := "G3:G12" + file.SetCellFormula("成绩单", "G3", "=SUM(D3:F3)", excelize.FormulaOpts{ + Type: &fType, + Ref: &area, + }) + area2 := "D13:G13" + file.SetCellFormula("成绩单", "D13", "=SUM(D3:D12)", excelize.FormulaOpts{ + Type: &fType, + Ref: &area2, + }) + area3 := "H3:H12" + file.SetCellFormula("成绩单", "H3", "=AVERAGE(D3:F3)", excelize.FormulaOpts{ + Type: &fType, + Ref: &area3, + }) + area4 := "D14:H14" + file.SetCellFormula("成绩单", "D14", "=AVERAGE(D3:D12)", excelize.FormulaOpts{ + Type: &fType, + Ref: &area4, + }) + file.MergeCell("成绩单", "B13", "C13") + file.MergeCell("成绩单", "B14", "C14") + file.AddTable("成绩单", &excelize.Table{ + Range: "B2:H14", + Name: "", + StyleName: "TableStyleMedium9", + ShowColumnStripes: true, + ShowFirstColumn: true, + ShowLastColumn: true, + }) + type Integer *int + + newStyle, _ := file.NewStyle(&excelize.Style{ + NumFmt: 2, + }) + file.SetCellStyle("成绩单", "H1", "H14", newStyle) + file.SetCellStyle("成绩单", "D14", "G14", newStyle) + file.SetPanes("成绩单", &excelize.Panes{ + Freeze: false, + Split: true, + XSplit: 2000, + YSplit: 1000, + TopLeftCell: "A1", + ActivePane: "bottomRight", + Selection: nil, + }) + chart1 := getChart() + chart2 := getChart() + fmt.Printf("%p\n%p", chart1, chart2) + file.AddChart("成绩单", "J2", chart1) + err := file.AddChartSheet("统计图", chart2) + if err != nil { + fmt.Printf("%+v\n", err) + } + file.SetSheetBackground("统计图", "D:\\note\\golang.png") + file.SetSheetBackground("成绩单", "D:\\note\\golang.png") + style1, err := file.NewConditionalStyle(&excelize.Style{ + Border: []excelize.Border{ + excelize.Border{ + Type: "top", + Color: "#ff0303", + Style: 6, + }, + excelize.Border{ + Type: "bottom", + Color: "#ff0303", + Style: 6, + }, + excelize.Border{ + Type: "left", + Color: "#ff0303", + Style: 6, + }, + excelize.Border{ + Type: "right", + Color: "#ff0303", + Style: 6, + }, + }, + Fill: excelize.Fill{ + Type: "pattern", + Color: []string{"ffa3a3"}, + }, + Font: &excelize.Font{ + Color: "#8c2e2e", + }, + Alignment: nil, + Protection: nil, + NumFmt: 0, + DecimalPlaces: nil, + CustomNumFmt: nil, + NegRed: false, + }) + style2, err := file.NewConditionalStyle(&excelize.Style{ + Border: []excelize.Border{ + excelize.Border{ + Type: "top", + Color: "#1f9900", + Style: 6, + }, + excelize.Border{ + Type: "bottom", + Color: "#1f9900", + Style: 6, + }, + excelize.Border{ + Type: "left", + Color: "#1f9900", + Style: 6, + }, + excelize.Border{ + Type: "right", + Color: "#1f9900", + Style: 6, + }, + }, + Font: &excelize.Font{ + Color: "#1f9900", + }, + Alignment: nil, + Protection: nil, + NumFmt: 0, + DecimalPlaces: nil, + CustomNumFmt: nil, + NegRed: false, + }) + err = file.SetConditionalFormat("成绩单", "D3:F12", []excelize.ConditionalFormatOptions{ + { + Type: "data_bar", + BarColor: "#dfb5ff", + MinType: "num", + Criteria: "=", + MinValue: "70", + MaxType: "num", + MaxValue: "100", + BarSolid: true, + }, + }) + if err != nil { + fmt.Printf("%+v\n", err) + } + columns := []string{"D", "E", "F", "G"} + for _, column := range columns { + file.SetConditionalFormat("成绩单", column+"3:"+column+"12", []excelize.ConditionalFormatOptions{ + { + Type: "bottom", + Format: style1, + Criteria: "=", + Value: "1", + }, + }) + file.SetConditionalFormat("成绩单", column+"3:"+column+"12", []excelize.ConditionalFormatOptions{ + { + Type: "top", + Format: style2, + Criteria: "=", + Value: "1", + }, + }) + } + for i := range columns { + for j := 3; j <= 12; j++ { + column := columns[i] + file.AddComment("成绩单", excelize.Comment{ + Author: "god", + AuthorID: 1, + Cell: column + strconv.Itoa(j), + Text: "红色最低分,绿色最高分", + }) + } + } + _ = file.SaveAs("D:\\note\\test.xlsx") +} + +func getChart() *excelize.Chart { + return &excelize.Chart{ + Type: excelize.Col, + XAxis: excelize.ChartAxis{ + Font: excelize.Font{ + Color: "#000000", + }, + }, + YAxis: excelize.ChartAxis{ + Font: excelize.Font{ + Color: "#000000", + }, + }, + Series: []excelize.ChartSeries{{ + Name: "成绩单!$D$2", + Categories: "成绩单!$B$3:$B$12,成绩单!$B$14", + Values: "成绩单!$D$3:$D$12,成绩单!$D$14", + DataLabelPosition: excelize.ChartDataLabelsPositionAbove}, + { + Name: "成绩单!$E$2", + Categories: "成绩单!$B$3:$B$12,成绩单!$B$14", + Values: "成绩单!$E$3:$E$12,成绩单!$E$14", + DataLabelPosition: excelize.ChartDataLabelsPositionAbove}, + { + Name: "成绩单!$F$2", + Categories: "成绩单!$B$3:$B$12,成绩单!$B$14", + Values: "成绩单!$F$3:$F$12,成绩单!$F$14", + DataLabelPosition: excelize.ChartDataLabelsPositionAbove}, + }, + + Legend: excelize.ChartLegend{ + Position: "right", + ShowLegendKey: true, + }, + Title: []excelize.RichTextRun{ + { + Font: nil, + Text: "成绩单", + }, + }, + PlotArea: excelize.ChartPlotArea{ + ShowVal: true, + }, + } +} +``` + +效果图如下: + +![image-20260404173026058](D:\GitRepository1\gitPra\周新忠学习笔记\4.4\image-20260404173026058.png) \ No newline at end of file diff --git a/周新忠学习笔记/4.4/image-20260404173026058.png b/周新忠学习笔记/4.4/image-20260404173026058.png new file mode 100644 index 0000000..ae06116 Binary files /dev/null and b/周新忠学习笔记/4.4/image-20260404173026058.png differ