zoukankan      html  css  js  c++  java
  • Goland操作Excel表格

    一、创建Excel表格

    package main
    
    import (
    	"fmt"
    
    	"github.com/360EntSecGroup-Skylar/excelize/v2"
    )
    
    func main() {
    	// 创建excel表格
    	// new一个文件句柄
    	file := excelize.NewFile()
    
    	// 创建一个新的sheet,写Sheet2默认会有个Sheet1,当然我们也可以执行操作Sheet1
    	index := file.NewSheet("Sheet2")
    
    	// 设置单元格的值
    	/*
    		Sheet2:  Sheet名称
    		A2    :  单元格
    		Hello :  单元格的值
    	*/
    	file.SetCellValue("Sheet2", "A2", "Hello")
    	file.SetCellValue("Sheet2", "B2", 1000000)
    	// 设置单元格样式
    	style, err := file.NewStyle(`{
    		"font":
    		{
    			"bold": true,
    			"family": "font-family",
    			"size": 20,
    			"color": "#777777"
    		}
    	}`)
    	if err != nil {
    		fmt.Println(err)
    	}
    	// 设值
    	file.SetCellValue("Sheet1", "A1", "Hello")
    	// 设置单元格样式
    	/*
    			Sheet1: 要操作的Sheet页name
    			A1    : 单元格起位置 ("A1", "A1")A1一整列都是这个格式
    			A1    : 单元格终位置 ("A1", "D5")A1-D都是这个格式
    		   style  : 单元格格式
    	*/
    	file.SetCellStyle("Sheet1", "A1", "D5", style)
    
    	// 设置工作簿的活动工作表
    	file.SetActiveSheet(index)
    
    	// 指定保存路径
    	if err := file.SaveAs("test.xlsx"); err != nil {
    		fmt.Println(err)
    	}
    }
    
    

    二、往excel表格中插入图片

    package main
    
    import (
    	"fmt"
    
    	_ "image/gif"
    	_ "image/jpeg"
    	_ "image/png"
    
    	"github.com/360EntSecGroup-Skylar/excelize/v2"
    )
    
    func main() {
    	// 打开一个Excel表格
    	file, err := excelize.OpenFile("test.xlsx")
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    
    	// 插入图片
    	if err := file.AddPicture("Sheet1", "A2", "images.png", ""); err != nil {
    		fmt.Println(err, "插入图片")
    	}
    
    	// 在支持打印的单元格中插入图片偏移量
    	if err := file.AddPicture(
    		"Sheet1", "H2",
    		"images.png",
    		`{"x_offset": 15, "y_offset": 10, "print_obj": true, "lock_aspect_ratio": false, "locked": false}`,
    	); err != nil {
    		fmt.Println(err, "图片偏移量")
    	}
    
    	// 使用原始路径保存xlsx文件
    	if err = file.Save(); err != nil {
    		fmt.Println(err)
    	}
    }
    

    三、读取Excel文件

    package main
    
    import (
    	"fmt"
    
    	_ "image/gif"
    	_ "image/jpeg"
    	_ "image/png"
    
    	"github.com/360EntSecGroup-Skylar/excelize/v2"
    )
    
    func main() {
    	// 打开一个Excel表格
    	file, err := excelize.OpenFile("test.xlsx")
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    	// 按给定的工作表名称和轴从单元格中获取值
    	if cell, err := file.GetCellValue("Sheet1", "A1"); err != nil {
    		fmt.Println(err)
    		return
    	} else {
    		fmt.Println(cell)
    	}
    
    	// 获取Sheet1中的所有行
    	rows, err := file.GetRows("Sheet1")
    	if err == nil {
    		for _, row := range rows {
    			for _, colCell := range row {
    				// print一行数据 (string类型是数据)
    				fmt.Print(colCell, "	")
    			}
    			fmt.Println()
    		}
    	}
    }
    

    四、生成Excel文件并下载

    package main
    
    import (
    	"fmt"
    	"log"
    	"net/http"
    
    	"github.com/360EntSecGroup-Skylar/excelize/v2"
    )
    
    func DownExcel(response http.ResponseWriter, request *http.Request) {
    	// 创建一个文件句柄
    	file := excelize.NewFile()
    
    	// 设置单元格的值
    	file.SetCellValue("Sheet1", "A1", "你好")
    
    	// 按给定路径保存xlsx文件
    	if err := file.SaveAs("test01.xlsx"); err != nil {
    		fmt.Println(err)
    	}
    
    	response.Header().Set("Content-Type", "application/octet-stream")
    	// 下载后的名称
    	response.Header().Set("Content-Disposition", "attachment; filename="+"test02.xlsx")
    	response.Header().Set("Content-Transfer-Encoding", "binary")
    
    	_ = file.Write(response)
    }
    
    func main() {
    	http.HandleFunc("/", DownExcel) //   设置访问路由
    	log.Fatal(http.ListenAndServe(":8080", nil))
    }
    
  • 相关阅读:
    POJ2126——Prime Path(BFS)
    POJ3020——Antenna Placement(二分图的最大匹配)
    POJ1019——Number Sequence(大数处理)
    CodeForces484A——Bits(贪心算法)
    CodeForces485B——Valuable Resources(水题)
    CodeForces485A——Factory(抽屉原理)
    HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)
    cache和buffer区别
    https页面证书验证、加密过程简介
    主要的开源镜像站点资源
  • 原文地址:https://www.cnblogs.com/hsyw/p/15087440.html
Copyright © 2011-2022 走看看