初始
This commit is contained in:
302
third/excel/template.go
Normal file
302
third/excel/template.go
Normal file
@ -0,0 +1,302 @@
|
||||
package excel
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
var (
|
||||
GlobalStyle int // 全局样式
|
||||
GlobalStyleBold int // 基于GlobalStyle的 加粗
|
||||
GlobalStyleBoldSize int // 基于GlobalStyle的 加粗 加字体大小
|
||||
)
|
||||
|
||||
var Style = &excelize.Style{
|
||||
// 边框
|
||||
Border: []excelize.Border{
|
||||
{Type: "left", Color: "000000", Style: 1},
|
||||
{Type: "top", Color: "000000", Style: 1},
|
||||
{Type: "bottom", Color: "000000", Style: 1},
|
||||
{Type: "right", Color: "000000", Style: 1},
|
||||
},
|
||||
// 居中
|
||||
Alignment: &excelize.Alignment{
|
||||
Vertical: "center", // 上下居中
|
||||
Horizontal: "center", // 左右居中
|
||||
WrapText: true, // 自动换行
|
||||
},
|
||||
}
|
||||
|
||||
const (
|
||||
excelName = "Book1.xlsx"
|
||||
sheetName = "Sheet1"
|
||||
)
|
||||
|
||||
func styleFunc(f *excelize.File) {
|
||||
baseStyle := excelize.Style{
|
||||
Border: []excelize.Border{
|
||||
{Type: "left", Color: "000000", Style: 1},
|
||||
{Type: "top", Color: "000000", Style: 1},
|
||||
{Type: "bottom", Color: "000000", Style: 1},
|
||||
{Type: "right", Color: "000000", Style: 1},
|
||||
},
|
||||
Alignment: &excelize.Alignment{
|
||||
Vertical: "center",
|
||||
Horizontal: "center",
|
||||
WrapText: true,
|
||||
},
|
||||
}
|
||||
|
||||
font := excelize.Font{
|
||||
Color: "#262626",
|
||||
Bold: true,
|
||||
}
|
||||
|
||||
// 创建全局样式
|
||||
GlobalStyle, _ = f.NewStyle(&baseStyle)
|
||||
|
||||
// 创建加粗样式
|
||||
baseStyle.Font = &font
|
||||
GlobalStyleBold, _ = f.NewStyle(&baseStyle)
|
||||
|
||||
// 创建加粗加字体大小样式
|
||||
font.Size = 12
|
||||
baseStyle.Font = &font
|
||||
GlobalStyleBoldSize, _ = f.NewStyle(&baseStyle)
|
||||
}
|
||||
|
||||
// @Title cellMerge
|
||||
// @Description 合并单元格
|
||||
// @Author 铁憨憨[cory] 2024-10-18 14:20:40
|
||||
// @Param f
|
||||
// @Param qie 单元格切片
|
||||
// @Param qie 影响行(height高度相关)
|
||||
// @Param height 单元格高度(0隐藏当前行 -1取消自定义高度 其他单元格高度)
|
||||
// @Param style 样式
|
||||
// @Param str 单元格值
|
||||
func cellMerge(f *excelize.File, qie []string, height float64, style int, str string) {
|
||||
if len(qie) > 1 {
|
||||
f.MergeCell(sheetName, qie[0], qie[1]) // 合并单元格
|
||||
}
|
||||
f.SetCellStyle(sheetName, qie[0], qie[len(qie)-1], style) // 设置样式
|
||||
|
||||
if height != -1 {
|
||||
re := regexp.MustCompile("[0-9]+")
|
||||
rowStr := strings.Join(re.FindAllString(qie[0], -1), "")
|
||||
if rowNum, err := strconv.Atoi(rowStr); err == nil {
|
||||
f.SetRowHeight(sheetName, rowNum, height) // 设置行高
|
||||
}
|
||||
}
|
||||
|
||||
f.SetCellValue(sheetName, qie[0], str) // 设置单元格的值
|
||||
}
|
||||
|
||||
// 创建一个基础的 Excel 模板返回 *excelize.File
|
||||
func CreateExcelTemplate() (*excelize.File, error) {
|
||||
f := excelize.NewFile()
|
||||
defer f.Close()
|
||||
|
||||
// 初始化样式
|
||||
styleFunc(f)
|
||||
|
||||
// 初始化单元格布局
|
||||
businessFunc(f)
|
||||
|
||||
index, err := f.NewSheet(sheetName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
f.SetActiveSheet(index)
|
||||
|
||||
return f, nil
|
||||
}
|
||||
|
||||
func businessFunc(f *excelize.File) {
|
||||
// 一、
|
||||
one := []string{"A1", "L1"}
|
||||
cellMerge(f, one, 64, GlobalStyleBoldSize, "兴义市捧乍猪场坪农业光伏电站项目EPC总承包项目周报")
|
||||
// 二、
|
||||
two := []string{"A2", "B2"}
|
||||
cellMerge(f, two, 30, GlobalStyle, "项目名称:")
|
||||
two2 := []string{"C2", "G2"}
|
||||
cellMerge(f, two2, -1, GlobalStyle, "兴义市捧乍猪场坪农业光伏电站项目EPC总承包项目")
|
||||
two3 := []string{"H2"}
|
||||
cellMerge(f, two3, -1, GlobalStyleBold, "周报期数")
|
||||
two4 := []string{"I2"}
|
||||
cellMerge(f, two4, -1, GlobalStyle, "53")
|
||||
two5 := []string{"J2", "J3"}
|
||||
cellMerge(f, two5, -1, GlobalStyle, "日期:")
|
||||
two6 := []string{"K2", "L3"}
|
||||
cellMerge(f, two6, -1, GlobalStyle, "2024.10.05-2024.10.11")
|
||||
// 三、
|
||||
three := []string{"A3"}
|
||||
cellMerge(f, three, -1, GlobalStyle, "序号")
|
||||
three2 := []string{"B3", "I3"}
|
||||
cellMerge(f, three2, -1, GlobalStyle, "工程实施主要情况")
|
||||
// 四、
|
||||
four := []string{"A4"}
|
||||
cellMerge(f, four, -1, GlobalStyle, "1")
|
||||
four2 := []string{"B4"}
|
||||
cellMerge(f, four2, -1, GlobalStyle, "项目基本信息")
|
||||
four3 := []string{"C4"}
|
||||
cellMerge(f, four3, -1, GlobalStyle, "装机容量:")
|
||||
four4 := []string{"D4", "E4"}
|
||||
cellMerge(f, four4, -1, GlobalStyle, "开工日期:2022-08-15")
|
||||
four5 := []string{"F4", "H4"}
|
||||
cellMerge(f, four5, -1, GlobalStyle, "计划并网日期:")
|
||||
four6 := []string{"I4"}
|
||||
cellMerge(f, four6, -1, GlobalStyle, "总进度完成:")
|
||||
four7 := []string{"J4", "L4"}
|
||||
cellMerge(f, four7, -1, GlobalStyle, "96.5%")
|
||||
// 五、
|
||||
five := []string{"A5"}
|
||||
cellMerge(f, five, -1, GlobalStyle, "2")
|
||||
five2 := []string{"B5"}
|
||||
cellMerge(f, five2, -1, GlobalStyle, "本周完成主要形象进度")
|
||||
five3 := []string{"C5", "L5"}
|
||||
cellMerge(f, five3, -1, GlobalStyle, "")
|
||||
// 六、
|
||||
six := []string{"A6"}
|
||||
cellMerge(f, six, -1, GlobalStyle, "3")
|
||||
six2 := []string{"B6"}
|
||||
cellMerge(f, six2, -1, GlobalStyle, "下周计划主要形象进度")
|
||||
six3 := []string{"C6", "L6"}
|
||||
cellMerge(f, six3, -1, GlobalStyle, "")
|
||||
// 七、
|
||||
seven := []string{"A7"}
|
||||
cellMerge(f, seven, -1, GlobalStyle, "4")
|
||||
seven2 := []string{"B7"}
|
||||
cellMerge(f, seven2, -1, GlobalStyle, "质量(施工质量、设备材料到货验收)情况")
|
||||
seven3 := []string{"C7", "L7"}
|
||||
cellMerge(f, seven3, -1, GlobalStyle, "")
|
||||
// 八、
|
||||
eight := []string{"A8"}
|
||||
cellMerge(f, eight, -1, GlobalStyle, "5")
|
||||
eight2 := []string{"B8"}
|
||||
cellMerge(f, eight2, -1, GlobalStyle, "人员到位情况及施工器具")
|
||||
eight3 := []string{"C8", "L8"}
|
||||
cellMerge(f, eight3, -1, GlobalStyle, "")
|
||||
// 九、
|
||||
nine := []string{"A9", "A23"}
|
||||
cellMerge(f, nine, -1, GlobalStyle, "6")
|
||||
nine2 := []string{"B9", "B23"}
|
||||
cellMerge(f, nine2, -1, GlobalStyle, "")
|
||||
nine3 := []string{"C9"}
|
||||
cellMerge(f, nine3, -1, GlobalStyle, "名称")
|
||||
nine4 := []string{"D9"}
|
||||
cellMerge(f, nine4, -1, GlobalStyle, "位置")
|
||||
nine5 := []string{"E9"}
|
||||
cellMerge(f, nine5, -1, GlobalStyle, "单位")
|
||||
nine6 := []string{"F9"}
|
||||
cellMerge(f, nine6, -1, GlobalStyle, "设计数量")
|
||||
nine7 := []string{"G9"}
|
||||
cellMerge(f, nine7, -1, GlobalStyle, "本周完成情况")
|
||||
nine8 := []string{"H9"}
|
||||
cellMerge(f, nine8, -1, GlobalStyle, "累计完成量")
|
||||
nine9 := []string{"I9"}
|
||||
cellMerge(f, nine9, -1, GlobalStyle, "累计完成率")
|
||||
nine10 := []string{"J9", "K9"}
|
||||
cellMerge(f, nine10, -1, GlobalStyle, "下周计划完成")
|
||||
nine11 := []string{"L9"}
|
||||
cellMerge(f, nine11, -1, GlobalStyle, "备注")
|
||||
// 十
|
||||
ten := []string{"B10", "B23"}
|
||||
cellMerge(f, ten, -1, GlobalStyle, "施工进度(根据项目类型及进度情况自行分项,不用太细,能体现整体进度即可)")
|
||||
ten2 := []string{"C10"}
|
||||
cellMerge(f, ten2, -1, GlobalStyle, "基础")
|
||||
ten3 := []string{"D10"}
|
||||
cellMerge(f, ten3, -1, GlobalStyle, "光伏区")
|
||||
ten4 := []string{"E10"}
|
||||
cellMerge(f, ten4, -1, GlobalStyle, "个")
|
||||
ten5 := []string{"F10"}
|
||||
cellMerge(f, ten5, -1, GlobalStyle, "45450")
|
||||
ten6 := []string{"G10"}
|
||||
cellMerge(f, ten6, -1, GlobalStyle, "1415")
|
||||
ten7 := []string{"H10"}
|
||||
cellMerge(f, ten7, -1, GlobalStyle, "15445")
|
||||
ten8 := []string{"I10"}
|
||||
cellMerge(f, ten8, -1, GlobalStyle, "90")
|
||||
ten9 := []string{"J10", "K10"}
|
||||
cellMerge(f, ten9, -1, GlobalStyle, "545")
|
||||
ten10 := []string{"L10"}
|
||||
cellMerge(f, ten10, -1, GlobalStyle, "备注")
|
||||
// 二十四、
|
||||
twentyFour := []string{"A24", "A41"}
|
||||
cellMerge(f, twentyFour, -1, GlobalStyle, "7")
|
||||
twentyFour2 := []string{"B24", "B41"}
|
||||
cellMerge(f, twentyFour2, -1, GlobalStyle, "主要设备材料到货情况(列出主要材料即可)")
|
||||
twentyFour3 := []string{"C24"}
|
||||
cellMerge(f, twentyFour3, -1, GlobalStyle, "设备材料名称")
|
||||
twentyFour4 := []string{"D24"}
|
||||
cellMerge(f, twentyFour4, -1, GlobalStyle, "")
|
||||
twentyFour5 := []string{"E24"}
|
||||
cellMerge(f, twentyFour5, -1, GlobalStyle, "单位")
|
||||
twentyFour6 := []string{"F24"}
|
||||
cellMerge(f, twentyFour6, -1, GlobalStyle, "设计数量")
|
||||
twentyFour7 := []string{"G24"}
|
||||
cellMerge(f, twentyFour7, -1, GlobalStyle, "本周到货量")
|
||||
twentyFour8 := []string{"H24"}
|
||||
cellMerge(f, twentyFour8, -1, GlobalStyle, "累计到货量")
|
||||
twentyFour9 := []string{"I24"}
|
||||
cellMerge(f, twentyFour9, -1, GlobalStyle, "累计到货率")
|
||||
twentyFour10 := []string{"J24", "K24"}
|
||||
cellMerge(f, twentyFour10, -1, GlobalStyle, "计划到货日期")
|
||||
twentyFour11 := []string{"L24"}
|
||||
cellMerge(f, twentyFour11, -1, GlobalStyle, "备注")
|
||||
// 二十五
|
||||
twentyFive2 := []string{"C25"}
|
||||
cellMerge(f, twentyFive2, -1, GlobalStyle, "角钢")
|
||||
twentyFive3 := []string{"D25"}
|
||||
cellMerge(f, twentyFive3, -1, GlobalStyle, "")
|
||||
twentyFive4 := []string{"E25"}
|
||||
cellMerge(f, twentyFive4, -1, GlobalStyle, "")
|
||||
twentyFive5 := []string{"F25"}
|
||||
cellMerge(f, twentyFive5, -1, GlobalStyle, "")
|
||||
twentyFive6 := []string{"G25"}
|
||||
cellMerge(f, twentyFive6, -1, GlobalStyle, "")
|
||||
twentyFive7 := []string{"H25"}
|
||||
cellMerge(f, twentyFive7, -1, GlobalStyle, "")
|
||||
twentyFive8 := []string{"I25"}
|
||||
cellMerge(f, twentyFive8, -1, GlobalStyle, "90")
|
||||
twentyFive9 := []string{"J25", "K25"}
|
||||
cellMerge(f, twentyFive9, -1, GlobalStyle, "")
|
||||
twentyFive10 := []string{"L25"}
|
||||
cellMerge(f, twentyFive10, -1, GlobalStyle, "")
|
||||
// 四十二
|
||||
fortyTwo := []string{"A42"}
|
||||
cellMerge(f, fortyTwo, -1, GlobalStyle, "8")
|
||||
fortyTwo2 := []string{"B42"}
|
||||
cellMerge(f, fortyTwo2, -1, GlobalStyle, "存在问题及需要协调的事项")
|
||||
fortyTwo3 := []string{"C42", "L42"}
|
||||
cellMerge(f, fortyTwo3, -1, GlobalStyle, "无")
|
||||
// 四十三
|
||||
fortyThree := []string{"A43"}
|
||||
cellMerge(f, fortyThree, 90, GlobalStyle, "9")
|
||||
fortyThree2 := []string{"B43"}
|
||||
cellMerge(f, fortyThree2, -1, GlobalStyle, "照片")
|
||||
fortyThree3 := []string{"C43", "E43"}
|
||||
cellMerge(f, fortyThree3, -1, GlobalStyle, "")
|
||||
fortyThree4 := []string{"F43", "H43"}
|
||||
cellMerge(f, fortyThree4, -1, GlobalStyle, "")
|
||||
fortyThree5 := []string{"I43", "L43"}
|
||||
cellMerge(f, fortyThree5, -1, GlobalStyle, "")
|
||||
// 四十四
|
||||
fortyFour := []string{"A44"}
|
||||
cellMerge(f, fortyFour, -1, GlobalStyle, "10")
|
||||
fortyFour2 := []string{"B44"}
|
||||
cellMerge(f, fortyFour2, -1, GlobalStyle, "填报:")
|
||||
fortyFour3 := []string{"C44", "L44"}
|
||||
cellMerge(f, fortyFour3, -1, GlobalStyleBold, "审核:")
|
||||
|
||||
// 整体样式,不需要动
|
||||
f.SetColWidth(sheetName, "A", "A", 8)
|
||||
f.SetColWidth(sheetName, "B", "B", 11)
|
||||
f.SetColWidth(sheetName, "C", "C", 26)
|
||||
f.SetColWidth(sheetName, "D", "D", 26)
|
||||
f.SetColWidth(sheetName, "H", "H", 13)
|
||||
f.SetCellStyle(sheetName, "A1", "B44", GlobalStyleBold) // 注意:B44到时候需要取excel最大行数
|
||||
}
|
Reference in New Issue
Block a user