您现在的位置是:主页 > news > 网站上怎么做微信支付接口/新手怎么做seo优化
网站上怎么做微信支付接口/新手怎么做seo优化
admin2025/5/12 18:17:52【news】
简介网站上怎么做微信支付接口,新手怎么做seo优化,app开发公司架构,北京上云网站建设公司先给大家看下我们今天的主角:一只可爱的囊地鼠正在准备食用Excel~ GitHub链接:https://github.com/qax-os/excelize Excelize是一个用纯Go语言编写的库,提供了一组函数,可以对XLAM / XLSM / XLSX / XLTM / XLTX文件进行读写。支持…
网站上怎么做微信支付接口,新手怎么做seo优化,app开发公司架构,北京上云网站建设公司先给大家看下我们今天的主角:一只可爱的囊地鼠正在准备食用Excel~ GitHub链接:https://github.com/qax-os/excelize Excelize是一个用纯Go语言编写的库,提供了一组函数,可以对XLAM / XLSM / XLSX / XLTM / XLTX文件进行读写。支持…
先给大家看下我们今天的主角:一只可爱的囊地鼠正在准备食用Excel~
GitHub链接:https://github.com/qax-os/excelize
Excelize是一个用纯Go语言编写的库,提供了一组函数,可以对XLAM / XLSM / XLSX / XLTM / XLTX文件进行读写。支持读写由Microsoft Excel™2007及以后版本生成的电子表格文档。通过高兼容性支持复杂组件,并提供流API从具有大量数据的工作表中生成或读取数据。该库需要Go 1.16或更高版本。
那么本篇文章将会介绍我们操作Excel的常用功能,如下:
- 生成一个新的Excel文件
- 向Excel文件中追加内容
- 解析Excel文件内容
- 使用Http协议上传并解析Excel文件
- 使用Http协议将数据转换为Excel文件并下载
1 下载依赖库
go get github.com/xuri/excelize# Go Modules使用这个命令
go get github.com/xuri/excelize/v2
2 具体操作
2.1 生成一个新的Excel文件
func WriteNewExcel() {f := excelize.NewFile()// 创建一个sheetindex := f.NewSheet("Sheet2")// 根据sheet和坐标 确定一个值// 例如f.SetCellValue("Sheet2", "A2", "Hello world.")就是在Sheet表中A列第2行的格子里填入Hello world.f.SetCellValue("Sheet2", "A2", "Hello world.")f.SetCellValue("Sheet1", "B1", 100)f.SetCellValue("Sheet1", "B2", 100)// 将新的sheet添加到Excel中f.SetActiveSheet(index)// 保存Excelif err := f.SaveAs("Book1.xlsx"); err != nil {fmt.Println(err)}
}
2.2 向Excel文件中追加内容
func WriteExcel() {f, _ := excelize.OpenFile("Book1.xlsx")index := f.NewSheet("Sheet2")f.SetCellValue("Sheet2", "A2", "Hello world.")f.SetCellValue("Sheet1", "B1", 100)f.SetCellValue("Sheet1", "B2", 100)f.SetActiveSheet(index)if err := f.SaveAs("Book1.xlsx"); err != nil {fmt.Println(err)}
}
2.3 解析Excel文件内容
func ReadExcel() {f, err := excelize.OpenFile("Book1.xlsx")if err != nil {fmt.Println(err)return}defer func() {if err := f.Close(); err != nil {fmt.Println(err)}}()// 根据sheet和坐标读取某一个格子的值cell, err := f.GetCellValue("Sheet1", "B2")if err != nil {fmt.Println(err)return}fmt.Println(cell)// 按行读取全部rows, err := f.GetRows("Sheet1")if err != nil {fmt.Println(err)return}for _, row := range rows {for _, colCell := range row {fmt.Print(colCell, "\t")}fmt.Println()}
}
2.4 使用Http协议上传并解析Excel文件
func HttpReadExcel() {f := func(read io.Reader) {file, err := excelize.OpenReader(read)if err != nil {fmt.Println(err)return}for _, item := range file.GetSheetList() {rows, _ := file.GetRows(item)// rows是一个二维数组for i := range rows {strs := rows[i]for j := range strs {str := rows[i][j]fmt.Println(str)}}}}http.HandleFunc("/excel", func(w http.ResponseWriter, r *http.Request) {file, _, err := r.FormFile("file")if err != nil {fmt.Println(err)return}fileBytes, err := ioutil.ReadAll(file)if err != nil {fmt.Println(err)return}reader := bytes.NewReader(fileBytes)f(reader)w.Write([]byte("Hello Http Get!"))})http.ListenAndServe(":8080", nil)
}
2.5 使用Http协议将数据转换为Excel文件并下载
func HttpDownloadExcel() {fun := func(fileName string) *bytes.Reader {f := excelize.NewFile()f.SetCellValue("Sheet1", "B1", 100)err := f.SaveAs(fileName)if err != nil {fmt.Println(err)}var buffer bytes.Buffer_ = f.Write(&buffer)return bytes.NewReader(buffer.Bytes())}http.HandleFunc("/downloadExcel", func(w http.ResponseWriter, r *http.Request) {reader := fun("Book2.xlsx")// 重新设置文件名称w.Header().Set("Content-Disposition", "attachment; filename="+"Book2.xlsx")io.Copy(w, reader)})http.ListenAndServe(":8080", nil)
}
3 小总结
以上功能只需灵活扩展后基本上就可以覆盖大部分业务了,但是有一点需要注意,在2.5使用Http协议将数据转换为Excel文件并下载这个操作中,需要将文件进行重命名,这个名称可以自定义,也可以由服务端指定,但是需要以相关文件类型的名称做后缀,否则会输出zip压缩文件,很难看懂。
今天的分享就到这里~