golang将数据写入.csv文件和.excel文件

package main

import (
	"fmt"
	"os"
	"strconv"
	"strings"
	"sync"
	"time"

	"github.com/xuri/excelize/v2"
)

var wg sync.WaitGroup

func main() {
	wg.Add(2)
	go writeToCsv()
	go writeToExcelDirectly()
	wg.Wait()
}

func writeToCsv() {
	//数据写入到csv文件
	t1 := time.Now().UnixNano()
	//首行
	var titles string
	titles = "姓名,年龄,爱好\n"

	var stringBuilder strings.Builder
	stringBuilder.WriteString(titles)

	var i int
	for i = 0; i < 1000000; i++ {
		dataString := fmt.Sprintf("张三%d,%d,蹦极%d\n", i+1, i+1, i+1)
		stringBuilder.WriteString(dataString)
	}
	filename := "./test.csv"
	file, _ := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, os.ModeAppend|os.ModePerm)
	dataString := stringBuilder.String()
	file.WriteString(dataString)
	file.Close()

	t2 := time.Now().UnixNano()
	t := t2 - t1
	fmt.Printf("writeToCsv总共%d条数据,总耗时%d毫秒\n", i, t/1000000)
	wg.Done()
}

func writeToExcelDirectly() {
	//数据写入到excel文件
	t1 := time.Now().UnixNano()

	f := excelize.NewFile()
	defer f.Close()

	// 创建一个工作表
	index := f.NewSheet("Sheet1")

	// 设置单元格的值
	f.SetCellValue("Sheet1", "A1", "姓名")
	f.SetCellValue("Sheet1", "B1", "年龄")
	f.SetCellValue("Sheet1", "C1", "爱好")
	var indexA, indexB, indexC string
	var i int
	for i = 0; i < 10000; i++ {
		indexA = fmt.Sprintf("A%v", i+2)
		indexB = fmt.Sprintf("B%v", i+2)
		indexC = fmt.Sprintf("C%v", i+2)
		f.SetCellValue("Sheet1", indexA, "张三"+strconv.Itoa(i))
		f.SetCellValue("Sheet1", indexB, i)
		f.SetCellValue("Sheet1", indexC, "游泳"+strconv.Itoa(i))
	}

	// 设置工作簿的默认工作表
	f.SetActiveSheet(index)

	// 根据指定路径保存文件
	name := "test.xlsx"
	if err := f.SaveAs(name); err != nil {
		panic(err)
	}

	t2 := time.Now().UnixNano()
	t := t2 - t1
	fmt.Printf("writeToExcelDirectly总共%d条数据,总耗时%d毫秒\n", i, t/1000000)
	wg.Done()
}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值