go-zero整合Excelize并实现Excel导入导出
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
)
// 定义导入数据的结构体
type ImportData struct {
Sheet string
Rows [][]string
}
// 导入Excel文件
func ImportExcel(file string) (*ImportData, error) {
f, err := excelize.OpenFile(file)
if err != nil {
return nil, err
}
// 获取所有sheet的名称
sheets := f.GetSheetList()
sheetName := sheets[0]
// 读取sheet中的数据
rows, err := f.GetRows(sheetName)
if err != nil {
return nil, err
}
return &ImportData{Sheet: sheetName, Rows: rows}, nil
}
// 导出数据到Excel文件
func ExportExcel(data *ImportData, file string) error {
f := excelize.NewFile()
sheetName := data.Sheet
// 创建sheet并写入数据
for _, row := range data.Rows {
// 从第2行开始写入数据,第1行作为标题头
err := f.SetRow(sheetName, "A"+fmt.Sprint(len(row)+1), &[]interface{}{row})
if err != nil {
return err
}
}
// 保存文件
return f.SaveAs(file)
}
func main() {
// 导入示例
importData, err := ImportExcel("example.xlsx")
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("导入的数据: %+v\n", importData)
// 导出示例
err = ExportExcel(importData, "exported.xlsx")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("导出成功")
}
这段代码演示了如何使用go-zero框架中整合的Excelize库来实现Excel文件的导入和导出功能。首先定义了一个结构体ImportData
来存储导入的数据,然后实现了ImportExcel
和ExportExcel
函数来完成数据的导入和导出。最后在main
函数中演示了如何调用这些函数。
评论已关闭