【Golang】基于 excelize 的 Excel 工具包

news2024/11/26 18:54:37

目录

    • 1. 安装excelize库
    • 2. Excel工具代码
      • 2.1 初始化Excel对象
      • 2.2. 常用操作
        • 2.2.1 设置窗格冻结
        • 2.2.2 设置工作表名称
        • 2.2.3 创建工作表
        • 2.2.4 设置单元格值
        • 2.2.5 设置单元格样式
        • 2.2.6 合并单元格
        • 2.2.7 设置行高和列宽
    • 3.使用示例
    • 4.完整代码
    • 5.总结

 在日常的开发中,我们经常需要对Excel进行各种各样的操作,比如生成Excel报表、对Excel数据进行处理等。在Golang中,有一个非常好用的库——excelize,它支持对Excel文件的创建、读取、修改等操作。

1. 安装excelize库

首先,我们需要安装excelize库。在终端中执行以下命令:

go get github.com/xuri/excelize/v2

2. Excel工具代码

2.1 初始化Excel对象

 在使用excelize之前,我们需要初始化一个Excel对象。这个对象包含了Excel文件的信息,以及一些常用的样式。我们可以定义一个Excel结构体,然后创建一个ExcelInit函数来初始化这个结构体。

package utils
import (
	"github.com/xuri/excelize/v2"
)
var DEFAULT_ROW_HEIGHT = float64(25)
var DEFAULT_COLUMN_WIDTH = float64(18)
// Excel对象结构体
type Excel struct {
	File          *excelize.File
	TitleStyle    int // 标题样式
	HeadStyle     int // 头样式
	ContentStyle  int // 主体样式
	ContentStyle2 int // 主体样式, 带背景色
}
// 初始化一个Excel对象结构体
func ExcelInit() (e *Excel) {
	e = &Excel{}
	// excel构建
	e.File = excelize.NewFile()
	// 初始化样式
	e.getTitleRowStyle()
	e.getHeadRowStyle()
	e.getDataRowStyle()
	return e
}

2.2. 常用操作

2.2.1 设置窗格冻结

在Excel中,我们可以通过设置窗格冻结来固定某些行和列,使得它们在滚动时保持可见。在excelize中,我们可以使用SetPaneFreeze方法来实现这个功能。

// 设置窗格冻结
func (e *Excel) SetPaneFreeze(sheet string, col int, row int) error {
	cell, err := excelize.CoordinatesToCellName(col+1, row+1)
	if err != nil {
		return err
	}
	return e.File.SetPanes(sheet, &excelize.Panes{Freeze: true, Split: false, XSplit: col, YSplit: row, TopLeftCell: cell, ActivePane: "bottomLeft"})
}
2.2.2 设置工作表名称

我们可以使用SetSheetName方法来设置工作表的名称。

// 设置工作表名称
func (e *Excel) SetSheetName(index int, sheetName string) error {
	sheet := e.File.GetSheetName(index)
	return e.File.SetSheetName(sheet, sheetName)
}

使用ChangeSheetName修改工作表名称

func (e *Excel) ChangeSheetName(sheet string, newSheetName string) error {
	index, err := e.File.GetSheetIndex(sheet)
	if err != nil {
		return err
	}
	if index >= 0 {
		err = e.File.SetSheetName(sheet, newSheetName)
	}
	return err
}
2.2.3 创建工作表

使用CreateSheet方法可以创建一个新的工作表。如果工作表已存在,则返回该工作表的索引;如果不存在,则创建新的工作表并返回其索引。

// 创建工作表
func (e *Excel) CreateSheet(sheet string) (int, error) {
	index, err := e.File.GetSheetIndex(sheet)
	if err != nil {
		return index, err
	}
	if index < 0 {
		index, err = e.File.NewSheet(sheet)
	}
	return index, err
}

2.2.4 设置单元格值

使用SetCellValue方法可以在指定的工作表中设置某个单元格的值。

// 设置单元格值
func (e *Excel) SetCellValue(sheet string, col int, row int, value interface{}) error {
	cell, err := excelize.CoordinatesToCellName(col, row)
	if err != nil {
		return err
	}
	return e.File.SetCellValue(sheet, cell, value)
}
2.2.5 设置单元格样式

使用SetCellStyle方法可以为指定工作表中的单元格设置样式。

// 设置单元格样式
func (e *Excel) SetCellStyle(sheet string, col int, row int, styleID int) error {
	cell, err := excelize.CoordinatesToCellName(col, row)
	if err != nil {
		return err
	}
	return e.File.SetCellStyle(sheet, cell, cell, styleID)
}

使用SetCellsStyle方法可以为指定工作表范围内的单元格设置样式。

func (e *Excel) SetCellsStyle(sheet string, startCol int, startRow int, endCol int, endRow int, styleID int) error {
	startCell, err := excelize.CoordinatesToCellName(startCol, startRow)
	if err != nil {
		return err
	}
	endCell, err := excelize.CoordinatesToCellName(endCol, endRow)
	if err != nil {
		return err
	}
	return e.File.SetCellStyle(sheet, startCell, endCell, styleID)
}

使用SetCellHeadStyle设置单元格为头样式

func (e *Excel) SetCellHeadStyle(sheet string, col int, row int) error {
	return e.SetCellStyle(sheet, col, row, e.HeadStyle)
}

使用SetCellsHeadStyle设置范围单元格为头样式

func (e *Excel) SetCellsHeadStyle(sheet string, startCol int, startRow int, endCol int, endRow int) error {
	return e.SetCellsStyle(sheet, startCol, startRow, endCol, endRow, e.HeadStyle)
}

使用SetCellTitleStyle设置单元格为标题样式

func (e *Excel) SetCellTitleStyle(sheet string, col int, row int) error {
	return e.SetCellStyle(sheet, col, row, e.TitleStyle)
}

使用SetCellsTitleStyle设置范围单元格为标题样式

func (e *Excel) SetCellsTitleStyle(sheet string, startCol int, startRow int, endCol int, endRow int) error {
	return e.SetCellsStyle(sheet, startCol, startRow, endCol, endRow, e.TitleStyle)
}

使用SetCellContentStyle设置单元格为正文样式

func (e *Excel) SetCellContentStyle(sheet string, col int, row int) error {
	return e.SetCellStyle(sheet, col, row, e.ContentStyle)
}

使用SetCellsContentStyle设置范围单元格为正文样式

func (e *Excel) SetCellsContentStyle(sheet string, startCol int, startRow int, endCol int, endRow int) error {
	return e.SetCellsStyle(sheet, startCol, startRow, endCol, endRow, e.ContentStyle)
}

2.2.6 合并单元格

使用MergeCells方法可以在指定的工作表中合并一个矩形区域的单元格。

// 合并单元格
func (e *Excel) MergeCells(sheet string, startCol, startRow, endCol, endRow int) (err error) {
	startCell, err := excelize.CoordinatesToCellName(startCol, startRow)
	if err != nil {
		return err
	}
	endCell, err := excelize.CoordinatesToCellName(endCol, endRow)
	if err != nil {
		return err
	}
	return e.File.MergeCell(sheet, startCell, endCell)
}
2.2.7 设置行高和列宽

使用SetRowHeight 设置行高

func (e *Excel) SetRowHeight(sheet string, row int, height float64) error {
	return e.File.SetRowHeight(sheet, row, height)
}

使用SetRowsHeight设置多行高度

func (e *Excel) SetRowsHeight(sheet string, startRow int, endRow int, height float64) (err error) {
	for i := startRow; i <= endRow; i++ {
		err = e.File.SetRowHeight(sheet, i, height)
		if err != nil {
			return
		}
	}
	return
}

使用SetColWidth设置列宽

func (e *Excel) SetColWidth(sheet string, col int, width float64) error {
	cell, err := excelize.ColumnNumberToName(col)
	if err != nil {
		return err
	}
	return e.File.SetColWidth(sheet, cell, cell, width)
}

使用SetColsWidth 设置多列宽度

func (e *Excel) SetColsWidth(sheet string, startCol int, endCol int, width float64) (err error) {
	startColName, err := excelize.ColumnNumberToName(startCol)
	if err != nil {
		return
	}
	endColName, err := excelize.ColumnNumberToName(endCol)
	if err != nil {
		return
	}
	return e.File.SetColWidth(sheet, startColName, endColName, width)
}

使用SetColDefaultWidth 设置列为默认宽度

func (e *Excel) SetColDefaultWidth(sheet string, col int) error {
	return e.SetColWidth(sheet, col, DEFAULT_COLUMN_WIDTH)
}

使用SetColDefaultWidth 设置多列为默认宽度

func (e *Excel) SetColsDefaultWidth(sheet string, startcol, endcol int) error {
	return e.SetColsWidth(sheet, startcol, endcol, DEFAULT_COLUMN_WIDTH)
}

使用SetRowDefaultHeight 设置行为默认高度

func (e *Excel) SetRowDefaultHeight(sheet string, row int) error {
	return e.SetRowHeight(sheet, row, DEFAULT_ROW_HEIGHT)
}

使用SetRowsDefaultHeight 设置多行为默认高度

func (e *Excel) SetRowsDefaultHeight(sheet string, startRow, endRow int) (err error) {
	return e.SetRowsHeight(sheet, startRow, endRow, DEFAULT_ROW_HEIGHT)
}

3.使用示例

package main

import (
	"fmt"
	"github.com/your_project_path/utils"
)

func main() {
	// 初始化Excel对象
	e := utils.ExcelInit()
	// 创建一个新的工作表
	sheetName := "Sheet1"
	e.CreateSheet(sheetName)
	// 修改工作表名称
	e.ChangeSheetName(sheetName, "New Sheet Name")
	// 设置单元格值
	e.SetCellValue("New Sheet Name", 1, 1, "Hello World")
	// 设置单元格样式
	e.SetCellsTitleStyle("New Sheet Name", 1, 1, 5, 1)
	// 合并单元格
	e.MergeCells("New Sheet Name", 1, 1, 5, 1)
	// 设置行高
	e.SetRowDefaultHeight("New Sheet Name", 1)
	// 设置列宽
	e.SetColsDefaultWidth("New Sheet Name", 1, 5)
	// 设置单元格样式
	e.SetCellsTitleStyle("New Sheet Name", 1, 2, 5, 2)
	// 设置单元格数值
	for i := 0; i < 5; i++ {
		e.SetCellValue("New Sheet Name", i+1, 2, i)
	}
	// 设置冻结首行
	e.SetPaneFreeze("New Sheet Name", 0, 1)
	// 保存文件
	e.File.SaveAs("output.xlsx")
}

以上示例忽略error返回值,实际使用需要考虑error不为nil的情况。

输出结果:
在这里插入图片描述
请添加图片描述

4.完整代码

package utils

import (
	"github.com/xuri/excelize/v2"
)

var DEFAULT_ROW_HEIGHT = float64(25)
var DEFAULT_COLUMN_WIDTH = float64(18)

// Excel对象结构体
type Excel struct {
	File          *excelize.File
	TitleStyle    int // 标题样式
	HeadStyle     int // 头样式
	ContentStyle  int // 主体样式
	ContentStyle2 int // 主体样式, 带背景色
}

// 初始化一个Excel对象结构体
func ExcelInit() (e *Excel) {
	e = &Excel{}
	// excel构建
	e.File = excelize.NewFile()
	// 初始化样式
	e.getTitleRowStyle()
	e.getHeadRowStyle()
	e.getDataRowStyle()
	return e
}

// @title    SetPaneFreeze 设置窗格冻结
// @description   在指定的工作表中设置窗格冻结,冻结窗格可以固定行和列,使得它们在滚动时保持可见。
// @param     sheet        string         "工作表名称"
// @param     col          int            "冻结窗格的列号(从0开始)"
// @param     row          int            "冻结窗格的行号(从0开始)"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetPaneFreeze(sheet string, col int, row int) error {
	cell, err := excelize.CoordinatesToCellName(col+1, row+1)
	if err != nil {
		return err
	}
	return e.File.SetPanes(sheet, &excelize.Panes{Freeze: true, Split: false, XSplit: col, YSplit: row, TopLeftCell: cell, ActivePane: "bottomLeft"})
}

// @title    SetSheetName 设置工作表名称
// @description   设置指定索引的工作表名称。此方法首先获取指定索引的工作表名称,然后将其重命名为新的名称。
// @param     index        int           "工作表的索引"
// @param     sheetName    string        "工作表名称"
// @return    error        error         "如果设置过程中发生错误,则返回错误信息"
func (e *Excel) SetSheetName(index int, sheetName string) error {
	sheet := e.File.GetSheetName(index)
	return e.File.SetSheetName(sheet, sheetName)
}

// @title    ChangeSheetName 设置工作表名称
// @description   更改指定工作表的名称。
// @param     sheet        string         "原始工作表名称"
// @param     newSheetName string         "新的工作表名称"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) ChangeSheetName(sheet string, newSheetName string) error {
	index, err := e.File.GetSheetIndex(sheet)
	if err != nil {
		return err
	}
	if index >= 0 {
		err = e.File.SetSheetName(sheet, newSheetName)
	}
	return err
}

// @title    CreateSheet 创建工作表
// @description   该方法用于创建一个新的工作表。如果工作表已存在,则返回该工作表的索引;如果不存在,则创建新的工作表并返回其索引。
// @param     sheet        string          "要创建的工作表名称"
// @return    index        int             "创建或已存在的工作表的索引"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) CreateSheet(sheet string) (int, error) {
	index, err := e.File.GetSheetIndex(sheet)
	if err != nil {
		return index, err
	}
	if index < 0 {
		index, err = e.File.NewSheet(sheet)
	}
	return index, err
}

// @title    SetCellValue 设置单元格值
// @description   该方法用于在指定的工作表中设置某个单元格的值。单元格的位置由列号和行号确定。
// @param     sheet        string          "要设置值的工作表名称"
// @param     col          int             "单元格的列号(从1开始计数)"
// @param     row          int             "单元格的行号(从1开始计数)"
// @param     value        interface{}     "要设置的单元格值,可以是字符串、数字、布尔值等"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetCellValue(sheet string, col int, row int, value interface{}) error {
	cell, err := excelize.CoordinatesToCellName(col, row)
	if err != nil {
		return err
	}
	return e.File.SetCellValue(sheet, cell, value)
}

// @title    SetCellStyle 设置单元格样式
// @description   为指定工作表中的单元格设置样式。
// @param     sheet        string         "工作表名称"
// @param     col          int            "单元格所在的列号"
// @param     row          int            "单元格所在的行号"
// @param     styleID      int            "要应用的样式ID"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetCellStyle(sheet string, col int, row int, styleID int) error {
	cell, err := excelize.CoordinatesToCellName(col, row)
	if err != nil {
		return err
	}
	return e.File.SetCellStyle(sheet, cell, cell, styleID)
}

// @title    SetCellsStyle 设置单元格样式
// @description   该方法用于在指定的工作表中,为给定范围的单元格设置特定的样式。单元格范围由起始列、起始行、结束列和结束行定义。
// @param     sheet        string          "要设置样式的工作表名称"
// @param     startCol     int             "设置样式的起始列号(从1开始计数)"
// @param     startRow     int             "设置样式的起始行号(从1开始计数)"
// @param     endCol       int             "设置样式的结束列号"
// @param     endRow       int             "设置样式的结束行号"
// @param     styleID      int             "要应用的样式的ID"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetCellsStyle(sheet string, startCol int, startRow int, endCol int, endRow int, styleID int) error {
	startCell, err := excelize.CoordinatesToCellName(startCol, startRow)
	if err != nil {
		return err
	}
	endCell, err := excelize.CoordinatesToCellName(endCol, endRow)
	if err != nil {
		return err
	}
	return e.File.SetCellStyle(sheet, startCell, endCell, styleID)
}

// @title    SetCellHeadStyle 设置单元格头部样式
// @description   为指定工作表中的单个单元格设置头部样式。
// @param     sheet        string         "工作表名称"
// @param     col          int            "单元格所在的列号"
// @param     row          int            "单元格所在的行号"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetCellHeadStyle(sheet string, col int, row int) error {
	return e.SetCellStyle(sheet, col, row, e.HeadStyle)
}

// @title    SetCellsHeadStyle 设置多个单元格头部样式
// @description   为指定工作表中的多个单元格设置头部样式。
// @param     sheet        string         "工作表名称"
// @param     startCol     int            "起始单元格的列号"
// @param     startRow     int            "起始单元格的行号"
// @param     endCol       int            "结束单元格的列号"
// @param     endRow       int            "结束单元格的行号"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetCellsHeadStyle(sheet string, startCol int, startRow int, endCol int, endRow int) error {
	return e.SetCellsStyle(sheet, startCol, startRow, endCol, endRow, e.HeadStyle)
}

// @title    SetCellTitleStyle 设置单元格标题样式
// @description   为指定工作表中的单个单元格设置标题样式。
// @param     sheet        string         "工作表名称"
// @param     col          int            "单元格所在的列号"
// @param     row          int            "单元格所在的行号"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetCellTitleStyle(sheet string, col int, row int) error {
	return e.SetCellStyle(sheet, col, row, e.TitleStyle)
}

// @title    SetCellsTitleStyle 设置多个单元格标题样式
// @description   为指定工作表中的多个单元格设置标题样式。
// @param     sheet        string         "工作表名称"
// @param     startCol     int            "起始单元格的列号"
// @param     startRow     int            "起始单元格的行号"
// @param     endCol       int            "结束单元格的列号"
// @param     endRow       int            "结束单元格的行号"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetCellsTitleStyle(sheet string, startCol int, startRow int, endCol int, endRow int) error {
	return e.SetCellsStyle(sheet, startCol, startRow, endCol, endRow, e.TitleStyle)
}

// @title    SetCellContentStyle 设置单元格内容样式
// @description   为指定工作表中的单个单元格设置内容样式。
// @param     sheet        string         "工作表名称"
// @param     col          int            "单元格所在的列号"
// @param     row          int            "单元格所在的行号"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetCellContentStyle(sheet string, col int, row int) error {
	return e.SetCellStyle(sheet, col, row, e.ContentStyle)
}

// @title    SetCellsContentStyle 设置多个单元格内容样式
// @description   为指定工作表中的多个单元格设置内容样式。
// @param     sheet        string         "工作表名称"
// @param     startCol     int            "起始单元格的列号"
// @param     startRow     int            "起始单元格的行号"
// @param     endCol       int            "结束单元格的列号"
// @param     endRow       int            "结束单元格的行号"
// @return    error        error          "如果操作成功返回nil,否则返回错误信息"
func (e *Excel) SetCellsContentStyle(sheet string, startCol int, startRow int, endCol int, endRow int) error {
	return e.SetCellsStyle(sheet, startCol, startRow, endCol, endRow, e.ContentStyle)
}

// @title    MergeCells 合并单元格
// @description   该方法用于在指定的工作表中合并一个矩形区域的单元格。这个区域由起始行、起始列、结束行和结束列定义。
// @param     sheet        string          "要合并单元格的工作表名称"
// @param     startRow     int             "合并区域的起始行号(从1开始计数)"
// @param     startCol     int             "合并区域的起始列号(从1开始计数)"
// @param     endRow       int             "合并区域的结束行号"
// @param     endCol       int             "合并区域的结束列号"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) MergeCells(sheet string, startRow, startCol, endRow, endCol int) (err error) {
	startCell, err := excelize.CoordinatesToCellName(startCol, startRow)
	if err != nil {
		return err
	}
	endCell, err := excelize.CoordinatesToCellName(endCol, endRow)
	if err != nil {
		return err
	}
	return e.File.MergeCell(sheet, startCell, endCell)
}

// @title    SetRowHeight 设置行高
// @description   该方法用于在指定的工作表中设置指定行的行高。
// @param     sheet        string          "要设置行高的工作表名称"
// @param     row          int             "要设置行高的行号(从1开始计数)"
// @param     height       float64         "要设置的行高值"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetRowHeight(sheet string, row int, height float64) error {
	return e.File.SetRowHeight(sheet, row, height)
}

// @title    SetRowsHeight 设置多行高度
// @description   该方法用于在指定的工作表中设置一个连续行范围内的所有行的行高。
// @param     sheet        string          "要设置行高的工作表名称"
// @param     startRow     int             "设置行高的起始行号(从1开始计数)"
// @param     endRow       int             "设置行高的结束行号"
// @param     height       float64         "要设置的所有行的行高值"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetRowsHeight(sheet string, startRow int, endRow int, height float64) (err error) {
	for i := startRow; i <= endRow; i++ {
		err = e.File.SetRowHeight(sheet, i, height)
		if err != nil {
			return
		}
	}
	return
}

// @title    SetColWidth 设置列宽
// @description   该方法用于在指定的工作表中设置指定列的列宽。
// @param     sheet        string          "要设置列宽的工作表名称"
// @param     col          int             "要设置列宽的列号(从1开始计数)"
// @param     width        float64         "要设置的列宽值"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetColWidth(sheet string, col int, width float64) error {
	cell, err := excelize.ColumnNumberToName(col)
	if err != nil {
		return err
	}
	return e.File.SetColWidth(sheet, cell, cell, width)
}

// @title    SetColsWidth 设置多列宽度
// @description   该方法用于在指定的工作表中设置一个连续列范围内的所有列的列宽。
// @param     sheet        string          "要设置列宽的工作表名称"
// @param     startCol     int             "设置列宽的起始列号(从1开始计数)"
// @param     endCol       int             "设置列宽的结束列号"
// @param     width        float64         "要设置的所有列的列宽值"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetColsWidth(sheet string, startCol int, endCol int, width float64) (err error) {
	startColName, err := excelize.ColumnNumberToName(startCol)
	if err != nil {
		return
	}
	endColName, err := excelize.ColumnNumberToName(endCol)
	if err != nil {
		return
	}
	return e.File.SetColWidth(sheet, startColName, endColName, width)
}

// @title    SetColDefaultWidth 设置列为默认宽度
// @description   该方法用于在指定的工作表中设置指定列为默认列宽。
// @param     sheet        string          "要设置默认列宽的工作表名称"
// @param     col          int             "要设置默认列宽的列号(从1开始计数)"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetColDefaultWidth(sheet string, col int) error {
	return e.SetColWidth(sheet, col, DEFAULT_COLUMN_WIDTH)
}

// @title    SetColsDefaultWidth 设置多列为默认宽度
// @description   该方法用于在指定的工作表中设置一个连续列范围内的所有列为默认列宽。
// @param     sheet        string          "要设置默认列宽的工作表名称"
// @param     startCol     int             "设置默认列宽的起始列号(从1开始计数)"
// @param     endCol       int             "设置默认列宽的结束列号"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetColsDefaultWidth(sheet string, startcol, endcol int) error {
	return e.SetColsWidth(sheet, startcol, endcol, DEFAULT_COLUMN_WIDTH)
}

// @title    SetRowDefaultHeight 设置行为默认高度
// @description   该方法用于在指定的工作表中设置指定行为默认行高。
// @param     sheet        string          "要设置默认行高的工作表名称"
// @param     row          int             "要设置默认行高的行号(从1开始计数)"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetRowDefaultHeight(sheet string, row int) error {
	return e.SetRowHeight(sheet, row, DEFAULT_ROW_HEIGHT)
}

// @title    SetRowsDefaultHeight 设置多行为默认高度
// @description   该方法用于在指定的工作表中设置一个连续行范围内的所有行为默认行高。
// @param     sheet        string          "要设置默认行高的工作表名称"
// @param     startRow     int             "设置默认行高的起始行号(从1开始计数)"
// @param     endRow       int             "设置默认行高的结束行号"
// @return    err          error           "如果操作成功,返回nil;如果发生错误,返回错误信息"
func (e *Excel) SetRowsDefaultHeight(sheet string, startRow, endRow int) (err error) {
	return e.SetRowsHeight(sheet, startRow, endRow, DEFAULT_ROW_HEIGHT)
}

// 标题样式
func (e *Excel) getTitleRowStyle() (err error) {
	e.TitleStyle, err = e.File.NewStyle(&excelize.Style{
		Alignment: &excelize.Alignment{ // 对齐方式
			Horizontal: "center", // 水平对齐居中
			Vertical:   "center", // 垂直对齐居中
		},
		Font: &excelize.Font{ // 字体
			Bold: true,
			Size: 16,
		},
		Border: getBorder(),
	})
	return
}

// 头样式
func (e *Excel) getHeadRowStyle() (err error) {
	e.HeadStyle, err = e.File.NewStyle(&excelize.Style{
		Alignment: &excelize.Alignment{ // 对齐方式
			Horizontal: "center", // 水平对齐居中
			Vertical:   "center", // 垂直对齐居中
			WrapText:   true,     // 自动换行
		},
		Font: &excelize.Font{ // 字体
			Bold: true,
			Size: 14,
		},
		Border: getBorder(),
	})
	return
}

// 数据行样式
func (e *Excel) getDataRowStyle() (err error) {
	style := excelize.Style{}
	style.Border = getBorder()
	style.Alignment = &excelize.Alignment{
		Horizontal: "center", // 水平对齐居中
		Vertical:   "center", // 垂直对齐居中
		WrapText:   true,     // 自动换行
	}
	style.Font = &excelize.Font{
		Size: 12,
	}
	e.ContentStyle, _ = e.File.NewStyle(&style)
	style.Fill = excelize.Fill{ // 背景颜色
		Type:    "pattern",
		Color:   []string{"#cce7f5"},
		Pattern: 1,
	}
	e.ContentStyle2, err = e.File.NewStyle(&style)
	return
}

// 边框样式
func getBorder() []excelize.Border {
	return []excelize.Border{
		{Type: "top", Color: "000000", Style: 1},
		{Type: "bottom", Color: "000000", Style: 1},
		{Type: "left", Color: "000000", Style: 1},
		{Type: "right", Color: "000000", Style: 1},
	}
}

5.总结

 本文详细介绍了Golang中excelize库的基本使用方法,包括初始化Excel对象、常用操作等。通过这些方法,我们可以轻松地对Excel进行各种各样的操作。在实际开发中,我们可以根据自己的需求,灵活运用这些方法,实现复杂的Excel操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1659849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业必备:加密软件如何保障商业数据安全

在数字化时代&#xff0c;商业数据安全已成为企业运营中不可忽视的一环。在这个信息爆炸的时代&#xff0c;企业面临着诸多安全威胁&#xff0c;如数据泄露、黑客攻击等。因此&#xff0c;如何有效保障商业数据安全成为了每个企业都必须面对和解决的问题。而加密软件&#xff0…

免费思维13招之四:主副型思维

免费思维13招之四:主副型思维 本节,给你分享一下产品型思维的第二种子思维:主副型思维 什么是主副型思维呢?传统的主副型思维是指对企业的核心、利润最高的产品进行收费,一些附加品、延伸产品进行让利,赠送给客户。 但是这早已过时了,现在升级之后的产品型思维,就是将…

WebSocket 来单提醒和客户催单功能

一&#xff1a;WebSocket &#xff1a; WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

618精选好物推荐,五款品质与性价比并存的选择!

在繁忙的生活中&#xff0c;我们总是渴望找到那些能够提升生活品质的好物&#xff0c;让每一天都过得更加精彩。而618购物节&#xff0c;无疑是寻找这些好物的绝佳时机。在这个盛大的购物狂欢中&#xff0c;我们为大家精选了五款品质与性价比并存的选择&#xff0c;让大家在享受…

python使用opencv对图像的基本操作(4)

19.调整图片强度 19.1.调整强度 import numpy as np from skimage import exposure img np.array([51, 102, 153], dtypenp.uint8) matexposure.rescale_intensity(img) print(mat)注&#xff1a;skimage.exposure.rescale_intensity函数来调整img数组的亮度范围。这个函数会…

【C++】07.string详解

目录 一、为什么会有string&#xff1f; 二、string的常见接口说明 2.1 string的默认成员函数 2.1.1 默认构造函数 2.1.2析构函数 2.1.3赋值运算符 2.2迭代器介绍 2.2.1 正向迭代器 2.2.2 反向迭代器 2.3 string类对象的容量操作 2.4 string类对象的访问及遍…

django显示网页步骤

显示网页步骤 小白的django学习笔记 2024/5/6 8:30 文章目录 显示网页步骤创建输入框&#xff08;文本、单选、多选&#xff09;效果如何在django中显示网页写函数配置地址运行&#xff0c;要选择这个工程名的&#xff0c;使用socket复制ip&#xff0c;后面在加上名字,成功&…

Qexo:让你的静态博客动起来

Qexo是一个强大而美观的在线静态博客编辑器&#xff0c;它不仅限于编辑&#xff0c;而是将静态博客提升到新的高度。通过GPL3.0开源协议&#xff0c;Qexo提供了一个集编辑、管理、扩展于一体的平台&#xff0c;让静态博客也能拥有动态的元素。无论你是Hexo、Hugo还是Valaxy的用…

LeetCode 404.左叶子之和

LeetCode 404.左叶子之和 1、题目 题目链接&#xff1a;404. 左叶子之和 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别…

Linux网络编程:TCP并发服务器实现

目录 1、前言 2、多进程代码实现 2.1 创建新的进程 2.2 客户端接收响应函数 2.3 僵尸进程处理 2.4 完整代码 2.5 代码测试 3、多线程代码实现 3.1 创建新的线程 3.2 线程函数定义 3.3 完整代码 3.4 代码测试 4、总结 1、前言 前面实现了基本的TCP编程&#xf…

idea 使用 git

可以看见项目地址&#xff0c; git clone 地址 就可以拉新项目了 命令 git remote -v

水果成篮 ---- 滑动窗口

题目链接 题目&#xff1a; 分析&#xff1a; 题目中&#xff0c; 我们只能连续采摘树&#xff0c; 而且采摘的树不能超过两种&#xff0c;找到可以包含最多树的方案&#xff0c; 所以我们可以理解为&#xff1a; 找到最长的连续子数组&#xff0c; 子数组中的数据种类不大于…

TC6291C 一款电流模式升压型DC-DC转换器芯片IC

一般概述 TC6291C是一款电流模式升压型DC-DC转换器。其脉宽调制电路&#xff0c;内置0.2Ω功率场效应管使这个调节器具有高功率效率。内部补偿网络也减少了多达6个的外部元件。误差信号放大器的同相输入端连接到0.6V精密基准电压&#xff0c;内部软启动功能可以减小瞬间…

SpringBoot+logback实现日志记录写入文件

前言 在实际的开发过程中&#xff0c;日志记录有着极其重要的作用&#xff0c;它帮助我们实现更高效的故障排查与调试、更及时的监控和性能优化、更全面的业务分析与决策支持…那么我们如何在SpringBoot项目中实现日志的个性化定制&#xff0c;以满足其他特殊需求呢&#xff1f…

element ui的table多选

使用el-table的selection-change事件来获取选中的值&#xff1b; 例&#xff1a; html代码&#xff1a; <el-button type"primary" click"openTableSet">列表设置</el-button><!-- 列表设置弹框 --> <el-dialog :close-on-click-mo…

FPGA+炬力ARM实现VR视频播放器方案,3D眼镜显示

3D眼镜显示&#xff1a; FPGA炬力ARM方案&#xff0c;单个视频源信号&#xff0c;同时驱动两个LCD屏显示&#xff0c;实现3D 沉浸式播放 客户应用&#xff1a;VR视频播放器 主要功能&#xff1a; 1.支持多种格式视频文件播放 2.支持2D/3D 效果实时切换播放 3.支持TF卡/U盘文…

linux性能监控之htop

上一章节我们说了下atop&#xff0c;接下来我们说下htop&#xff0c;htop其实就是top的升级版&#xff0c;允许用户监视系统上运行的进程及其完整的命令行&#xff0c;我们还是安装下看看运行htop的效果&#xff1a; #1.查看htop是由哪个yum源提供的 [rootk8s-master ~]# yum …

recycleview和banner新闻列表轮播图

说明&#xff1a;最近碰到一个需求&#xff0c;弄一个新闻列表和轮播图&#xff0c;在首页显示&#xff0c;并且需要json解析&#xff0c;图片下载&#xff0c;轮播图和新闻列表一起滑动 ui效果图&#xff1a; 文件说明&#xff1a; step1:引用依赖包 图片下载 json解析 轮播…

揭秘金融行业:资本的流转与价值的创造

金融行业&#xff0c;这个庞大而复杂的经济体系&#xff0c;如同现代社会的血脉&#xff0c;支撑着全球经济的运行与繁荣。它不仅关乎金钱的流通&#xff0c;更是涵盖了资金的管理、分配、增值、保护以及一系列与之相关的专业服务。今天&#xff0c;就让我们一起深入探索这个充…

护士节有趣味h5互动小游戏的作用是什么

护士节能够开展的营销活动种类也比较多&#xff0c;但无论如何都应该契合品牌元素和实现目标目的&#xff0c;基于微信平台的趣味玩法在参与和分享/效果方面都有利处。 在【雨科】平台有多款护士节趣味活动玩法&#xff0c;轻松设置快速开始&#xff0c;品牌宣传、渠道涨粉引流…