在linux环境中将Excel转换成文本

在linux环境中将Excel转换成文本

背景介绍

在运维自动化过程中有这样的需求,有公司使用公共文档Excel维护信息,这些信息需要运维及时获取实现自动化任务,这些自动化任务以shell为例,shell不能直接操作Excel文档,需要将Excel转换成文本然后在解析和分析,我使用GO语言开发编译成二进制命令(之前的go编译文章可以参考 ),上传到服务器当命令使用。

操作演示

准备文档:

在这里插入图片描述

上传服务器操作转换:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8CnJHh2z-1673142220073)(F:%5CDownload%5CDevops%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%5C%E5%9C%A8linux%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%B0%86Excel%E8%BD%AC%E6%8D%A2%E6%88%90%E6%96%87%E6%9C%AC.assets%5Cimage-20230107230036830.png)]

服务器操作记录代码:

[root@localhost /]# ls
"    boot          dev    etc   jingge.xlsx  lib64  media  opt   root  sbin  sys  usr
bin  catalina.jar  empty  home  lib          lvm    mnt    proc  run   srv   tmp  var
[root@localhost /]# exceltxt jingge.xlsx 第一页
======开始处理========
第一页
./jingge.txt
======完成处理========
[root@localhost /]# ls
"    boot          dev    etc   jingge.txt   lib    lvm    mnt  proc  run   srv  tmp  var
bin  catalina.jar  empty  home  jingge.xlsx  lib64  media  opt  root  sbin  sys  usr
[root@localhost /]# more   jingge.txt
部门/公司       项目英文名称    主机IP  主机名称        所属应用        操作系统        告警团队简称    备注
公司    work_cem        10.152.116.11   cem-ck-01       问卷    linux   work
公司2   work_cem        10.152.116.12   cem-ck-02       问卷    linux   work
公司3   work_cem        10.152.116.13   cem-ck-03       问卷    linux   work
公司4   work_cem        10.152.161.171  search-01       问卷    linux   work
公司5   bdfb_law        10.152.161.172  search-02       法律信息        linux   work
公司6   bdfb_law        10.152.161.173  search-03       法律信息        linux   work
公司7   bdfb_law        10.152.161.174  search-04       法律信息        linux   work
公司8   bdfb_law        10.152.161.175  search-05       法律信息        linux   work
上GO代码

在这里插入图片描述

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"

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

func main() {

	//var str = os.Args
	fmt.Println("======开始处理========")
	//fmt.Printf("%T\n", str)
	// var str0 = os.Args[0]
	var excel_file_name = os.Args[1]
	var excel_sheet_name = os.Args[2]
	fmt.Println(excel_sheet_name)
	file_name := strings.Split(excel_file_name, ".")[0]

	f, err := excelize.OpenFile(excel_file_name) ///excel_file_name  "b.xlsx"
	if err != nil {
		fmt.Println(err)
		return
	}
	defer func() {
		if err := f.Close(); err != nil {
			fmt.Println(err)
		}
	}()

	// 获取 Sheet 上所有单元格
	rows, err := f.GetRows(excel_sheet_name) ///excel_sheet_name
	if err != nil {
		fmt.Println(err)
		return
	}
	filePath := "./" + file_name + ".txt"
	fmt.Println(filePath)
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
	defer file.Close()
	if err != nil {
		fmt.Printf("open file err=%v\n", err)
		return
	}
	writer := bufio.NewWriter(file)
	for _, row := range rows {
		str := ""
		//fmt.Println(row)
		for _, colCell := range row {
			//fmt.Print(colCell, "\t")
			str = str + colCell + "\t"

		}
		//fmt.Println(str)
		//fmt.Println()
		s := str + "\r\n"
		writer.WriteString(s)

	}
	writer.Flush()
	fmt.Println("======完成处理========")
}

代码说明: 需要在GO二进制脚本命令上传入两个参数,第一个是Execl文件全称、第二个是sheet页名称

命令下载地址

exceltxt(将Excel转换成文本下载传送门)是Excel在Linux转换成文本的命令 下载地址是:https://download.csdn.net/download/qq_31555951/87371489,欢迎验证测试,提出意见。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值