网站首页 > 技术文章 正文
在一些情况下我们需要通过程序操作 Excel 文档,例如:打开读取已有 Excel 文档内容、创建新的 Excel 文档、基于已有文档(模版)生成新的 Excel 文档、向 Excel 文档中插入图片、图表和表格等元素,有时还需要跨平台实现这些操作。
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库。可以用来读写电子表格文档。
支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。
使用本类库要求使用的 Go 语言为 1.15 或更高版本。
安装
go get github.com/xuri/excelize/v2
创建 Excel 文档
package main
import (
"github.com/xuri/excelize/v2"
"log"
)
func main() {
//NewFile提供了一个按默认模板创建新文件的函数。
f := excelize.NewFile()
sheetName := "成绩表"
//NewSheet提供通过给定工作表名称创建新工作表的功能,并在附加工作表后返回工作簿中工作表的索引。
//创建新工作簿时,将创建名为“Sheet1”的默认工作表。
index := f.NewSheet(sheetName)
//SetActiveSheet提供了一个函数,用于按给定索引设置工作簿的默认活动工作表。
f.SetActiveSheet(index)
//SetCellValue提供一个函数来设置单元格的值。指定的坐标不应在表格的第一行,可以用字符串文本设置复数。
f.SetCellValue(sheetName, "A1", "倚天屠龙记攻击力排行榜")
//SetSheetRow通过给定的工作表名称、起始坐标和指向数组类型“slice”的指针将数组写入行。
f.SetSheetRow(sheetName, "A2", &[]interface{}{"序号", "编码", "姓名", "派别", "物理攻击", "魔法攻击", "总攻击力", "平均攻击力"})
f.SetSheetRow(sheetName, "A3", &[]interface{}{1, 10001, "张无忌", "明教", 68, 96, nil, nil})
f.SetSheetRow(sheetName, "A4", &[]interface{}{2, 10002, "张三丰", "武当派", 28, 86, nil, nil})
f.SetSheetRow(sheetName, "A5", &[]interface{}{3, 10003, "周芷若", "峨眉派", 38, 76, nil, nil})
f.SetSheetRow(sheetName, "A6", &[]interface{}{4, 10004, "杨逍", "明教", 48, 66, nil, nil})
f.SetSheetRow(sheetName, "A7", &[]interface{}{5, 10005, "赵敏", "元朝", 58, 56, nil, nil})
_type, _ref := "shared", "G4:G8"
//SetCellFormula提供了一个函数,用于根据给定的工作表名称和单元格公式设置设置单元格上的公式。
f.SetCellFormula(sheetName, "G3", "=SUM(E3:F3)", excelize.FormulaOpts{
Type: &_type,
Ref: &_ref,
})
_type, _ref = "shared", "H4:H8"
f.SetCellFormula(sheetName, "H3", "=AVERAGE(E3:F3)", excelize.FormulaOpts{
Type: &_type,
Ref: &_ref,
})
//MergeCell提供了一个按给定坐标区域和图纸名称合并单元格的函数。
f.MergeCell(sheetName, "A1", "H1")
//NewStyle提供了一个函数,用于通过给定的JSON或结构指针为单元格创建样式。
//颜色字段使用RGB颜色代码。
style, _ := f.NewStyle(&excelize.Style{
//设置边框样式
Border: []excelize.Border{
{Type: "left", Color: "#000000", Style: 1},
{Type: "right", Color: "#000000", Style: 1},
{Type: "top", Color: "#000000", Style: 1},
{Type: "bottom", Color: "#000000", Style: 1},
},
//设置字体大小样式
Font: &excelize.Font{
Size: 11,
},
//设置垂直居中和水平居中
Alignment: &excelize.Alignment{
Horizontal: "center",
Vertical: "center",
},
})
//SetCellStyle提供了一个函数,用于根据给定的工作表名称、坐标区域和样式ID为单元格添加样式属性。
//在同一坐标区域中,对角线向下和对角线向上类型的边框应使用相同的颜色。
//SetCellStyle将覆盖单元格的现有样式,不会附加或合并样式
if err := f.SetCellStyle(sheetName, "A1", "H7", style); err != nil {
log.Panicln(err)
}
//设置标题字体大小
style, _ = f.NewStyle(&excelize.Style{
//设置字体大小样式
Font: &excelize.Font{
Bold: true,
Italic: false,
Size: 15,
},
//设置垂直居中和水平居中
Alignment: &excelize.Alignment{
Horizontal: "center",
Vertical: "center",
},
})
//SetCellStyle提供了一个函数,用于根据给定的工作表名称、坐标区域和样式ID为单元格添加样式属性。
//在同一坐标区域中,对角线向下和对角线向上类型的边框应使用相同的颜色。
//SetCellStyle将覆盖单元格的现有样式,不会附加或合并样式
if err := f.SetCellStyle(sheetName, "A1", "A1", style); err != nil {
log.Panicln(err)
}
//SetRowHeight提供一个函数来设置单行的高度。
for i := 1; i < 10; i++ {
if err := f.SetRowHeight(sheetName, i, 25); err != nil {
log.Panicln(err)
}
}
//SaveAs提供了一个函数,用于在提供的路径创建或更新电子表格。
if err := f.SaveAs("demo701.xlsx"); err != nil {
log.Panicln(err)
}
}
猜你喜欢
- 2024-11-15 CSS3+JS实现静态圆形进度条(css 圆形进度条)
- 2024-11-15 前端必读榜——如何在React中用SpreadJS导入/导出Excel文件
- 2024-11-15 Svelte教程翻译(六、生命周期)(servelet生命周期阶段)
- 2024-11-15 uniapp(Vue) 实现可粘贴的 个性化验证码 输入框
- 2024-11-15 css精髓:这些布局你都学废了吗?(css布局技术)
- 2024-11-15 Java 中的 AI:使用 Spring Boot 和 LangChain 构建 ChatGPT 克隆
- 2024-11-15 仅用18行JavaScript实现一个倒数计时器
- 2024-11-15 Web上的图片技巧「前端篇」(web网页图片)
- 2024-11-15 55个JS代码让你轻松当大神(完整的js代码)
- 2024-11-15 导入vue的html、css、JavaScript的仿抖音的文字时钟代码解析
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-