golang---操作表格文件

CSV文件

往csv文件写

	//创建文件
	f, err := os.Create("test.csv")
	if err != nil {
		fmt.Println(err)
	}
	defer f.Close()
	// 写入UTF-8 BOM
	f.WriteString("\xEF\xBB\xBF")
	//创建一个新的写入文件流
	w := csv.NewWriter(f)
	//这个二维数组,外层几个元素就代表几行,内层几个元素就代表几列
	data := [][]string{
		{"1", "刘备", "23"},//三列
		{"2", "张飞", "23"},
		{"3", "关羽", "23"},
		{"4", "赵云", "23"},
		{"5", "黄忠", "23"},
		{"6", "马超", "23"},
	}//6行
	//写入数据
	w.WriteAll(data)
	w.Flush()

func readCsv(fileName string) {
	// 准备读取文件
	fs, err := os.Open(fileName)
	if err != nil {
		log.Fatalf("can not open the file, err is %+v", err)
	}
	defer fs.Close()
	r := csv.NewReader(bufio.NewReader(fs))
	// 针对大文件,一行一行的读取文件
	for {
		row, err := r.Read()
		if err != nil && err != io.EOF {
			fmt.Printf("can not read, err is %+v", err)
		}
		if err == io.EOF {
			break
		}
		fmt.Println(row)
	}
}

XLSX文件

github.com/xuri/excelize/v2

github.com/xuri/excelize/v2

创建文件

func createXlsxFile(fileName string) {
	if !strings.HasSuffix(fileName, ".xlsx") {
		return
	}
	f := excelize.NewFile()
	index, err := f.NewSheet("sheet1")
	if err != nil {
		fmt.Println("newSheeet err=", err)
		return
	}
	f.SetActiveSheet(index)
	if err := f.SaveAs(fileName); err != nil {
		fmt.Println(err)
	}
}

写文件

func writeXlsxFile(file, sheetName string) {
	f, err := excelize.OpenFile(file)
	if err != nil {
		fmt.Println("writeXlsxFile opnefile err=", err)
		return
	}
	for i := 0; i < 1000; i++ {
		// A1对应的索引为0
		f.SetCellValue(sheetName, "A"+strconv.Itoa(i+1), "0001320515")
		// 每循环10次保存一次,这样不至于因为循环中某次失败导致所有数据都丢失
		if i%10 == 0 {
			if err := f.SaveAs(file); err != nil {
				fmt.Println("SaveAs err=", err.Error())
			}
		}
	}
}

读文件



func readXlsxFile(fileName, sheetName string) {
	f, err := excelize.OpenFile(fileName)
	if err != nil {
		fmt.Println(err)
		return
	}
	rows, err := f.GetRows(sheetName)
	if err != nil {

		fmt.Println("getRows ERR =", err)
		return
	}
	for _, row := range rows {
		for _, colCell := range row {
			fmt.Print(colCell, "\t")
		}
		fmt.Println()
	}
}

github.com/tealeg/xlsx/v3

github.com/tealeg/xlsx/v3

write

func XlsxWrite(fileName, sheetName string) {
	file := xlsx.NewFile()
	sheet, err := file.AddSheet(sheetName)
	if err != nil {
		fmt.Println("addSheet err =", err)
		return
	}
	for i := 0; i < 10; i++ {
		row := sheet.AddRow()
		row.AddCell().SetString("000212325")
	}
	err = file.Save(fileName)
	if err != nil {
		fmt.Println("file save err =", err)
		return
	}
}

read

func XlsxRead(fileName, sheetName string) {
	xlsxFile, err := xlsx.OpenFile(fileName)
	if err != nil {
		fmt.Println("xlsx opne file err = ", err)
		return
	}
	for _, sheet := range xlsxFile.Sheets {
		fmt.Println("sheet name:", sheet.Name)
		for i := 1; i < sheet.MaxRow; i++ {
			r, _ := sheet.Row(i)
			fmt.Println(r.GetCell(0).String(), "---", r.GetCell(1).String())
		}
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值