首页 > 其他分享 >golang 读取excel 保存xml

golang 读取excel 保存xml

时间:2024-02-22 13:56:43浏览次数:37  
标签:xml rows nil err fmt excel golang Println

1、首先下载第三方excel读取库go get github.com/xuri/excelize/v2

2、读取xml库,未使用默认xml库 go get github.com/beevik/etree

package main

import (
	"fmt"

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

func LoadExcelAndSaveXML() {
	f, err := excelize.OpenFile("Book1.xlsx")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer func() {
		// Close the spreadsheet.
		if err := f.Close(); err != nil {
			fmt.Println(err)
		}
	}()
	// Get value from cell by given worksheet name and cell reference.
	cell, err := f.GetCellValue("Sheet1", "B2")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(cell)
	// Get all the rows in the Sheet1.
	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()
	}

	tempArray1 := [100]string{}

	doc := etree.NewDocument()
	doc.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`)
	root := doc.CreateElement("Root")

	for i := 0; i < len(rows); i++ {
		tempArray := [100]string{}
		subElement := root.CreateElement("Property")
		for j := 0; j < len(rows[i]); j++ {
			if i == 0 {
				tempArray1[j] = rows[0][j]
			}

			if rows[0][j] == "" {
				continue
			}

			subElement.CreateAttr(rows[0][j], rows[i][j])

			tempArray[0] = rows[i][0]
			tempArray[j+1] = rows[i][j]
			fmt.Printf("key:%s = %s \n", rows[0][j], rows[i][j])
		}

		fmt.Println(tempArray)
	}

	doc.Indent(2)
	if err := doc.WriteToFile("Book1.xml"); err != nil {
		fmt.Println(err)
	}

	fmt.Println(tempArray1)

}

func main() {
	fmt.Println("hello,world")

	LoadExcelAndSaveXML()
}

  

 

标签:xml,rows,nil,err,fmt,excel,golang,Println
From: https://www.cnblogs.com/ylwn817/p/18027173

相关文章

  • golang 包&go mod
    gomod初始化项目gomodinit项目开发中首先要在项目目录中用gomod命令生成一个go.mod文件管理项目的依赖自定义包自定义包://自定义包一定要放在第一行packagecalc/*定义的方法、变量、结构体等首字母大写表示公有方法,其他包中可以引入该方法首字母小......
  • 关于Golang中函数的接收者不同对接口的使用的影响理解
    对于函数而言:接收者为指针会改变接收者本身的值接收者为值则只是拷贝,不会改变原本的值并且值和指针可以任意调用对方的方法,即值可以调用接收者为指针的方法,指针可以调用接收者为值得方法。原因是:可以自动指针解引用和值寻址对于接口而言:接收者为指针的方法,不能将值赋值给接......
  • 如何在C#中使用 Excel 动态函数生成依赖列表
    前言在Excel中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化。依赖列表通常用于Excel的业务报告,例如学术记分卡中的【班级-学生】列表、区域销售报告中的【区域-国家/地区】列表、人口仪表板中的【年份-区域】列表以及生产摘要报告中的【单位-......
  • golang指针和结构体
    指针指针操作指针包括指针地址、指针类型和指针取值&:&符号放在变量前面进行取地址操作**:*放在变量前面根据地址进行取值指针地址:funcmain(){ varaint=1 //a的值是1--类型是int--,地址是0xc0000120c0,&是地址符号 fmt.Printf("a的值是%v--类型是%T--,地......
  • Weblogic XMLDecoder反序列化漏洞(CVE-2017-10271)复现
    0x00漏洞简介OracleFusionMiddleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。OracleWebLogicServer是其中的一个适用于云环境和传统环境的应用服务器组件。OracleFusionMiddleware中的Oracle......
  • Golang fmt包的使用
    摘要Golang是一种简洁、高效的编程语言,其标准库中的fmt包是开发者经常使用的一个重要工具。本文将深入探究Golangfmt包的使用,包括格式化输出、输入扫描、错误处理以及自定义格式化等方面的内容,帮助读者更好地理解和使用该包。 引言Golang的fmt包提供了一系列函数,用于格式化......
  • golang之函数
    目录一、什么是函数二、函数的定义三、函数的返回值1.多个返回值2.命名返回值四、函数的参数1.可变长参数一、什么是函数简单来说就是一个特定的方法,通过这个方法产生预期的结果。函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输......
  • 【Go-Lua】Golang嵌入Lua代码——gopher-lua
    嵌入式8篇文章0订阅订阅专栏Lua代码嵌入GolangGo版本:1.19首先是Go语言直接调用Lua程序,并打印,把环境跑通packagemainimportlua"github.com/yuin/gopher-lua"funcmain(){ L:=lua.NewState() deferL.Close() //go err:=L.DoString(`print("gogogo!")`) iferr!=n......
  • golang time包和日期函数
    获取当前时间 //获取当前时间对象 timeObj:=time.Now() /*获取当前日期语法一*/ //打印当前日期 fmt.Println(timeObj)//2024-02-2017:50:54.085353+0800CSTm=+0.000323093 //当前年 year:=timeObj.Year() //打印当月 month:=timeObj.Month() //......
  • golang函数
    函数定义/*函数定义关键字funcfunc函数名(参数参数类型)函数返回值的类型*/funcgetInfo(namestring,ageint)string{ returnname}//函数返回多个返回值:则返回类型括号包裹(返回值类型,类型..),即时返回两个int,也需要(int,int)funcgetNum(xint,statusboo......