golang实现读取当前所在文件夹里面的txt数据,去除空格,以列的形式保存在excel中

该博客介绍了一个用Golang实现的程序,该程序读取TXT文件中的数值数据,去除空格,并按照原行列结构保存到Excel文件中。程序首先通过ReadDir获取TXT文件,然后使用csv包创建Excel文件并写入数据,同时处理了UTF-8 BOM和不同字符的分隔问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假如原始数据在txt中,格式如下:

    1.23  486    89.001

456.2   8.25     96.01

       456.01  456.6    456.1

每一行的空格数量不同,但是数字数量相同,列数保持一致。希望将这些数据保持所在行数和列数不变,保存在excel中。

保存在excel中,格式如下:

col1          col2            col3

row1 1.23 486 89.001    

row2       456.2      8.25         96.01

row3     456.01     456.6      465.1


golang代码如下:

package main


import (
"encoding/csv"
"fmt"
"io/ioutil"
"os"
"os/exec"
"path/filepath"

Go语言中,我们可以使用第三方库如`go-excel`来处理Excel文件,`xlsx`用于读取,`github.com/tealeg/xlsx/writer`用于写入新的Excel文件。以下是基本步骤来实现这个功能: 1. 首先安装必要的库: ``` go get github.com/360EntSecGroup-Skylar/excelize/v2 ``` 2. 使用`excelize`打开Excel文件并读取数据: ```go f, err := excelize.OpenFile("input.xlsx") if err != nil { // 处理错误 } sheetName := "Sheet1" // 指定你需要筛选的sheet名 schoolCol, err := f.GetCellValue(sheetName, "A") // 获取学校名称所在标(这里是"A") if err != nil { // 处理错误 } rows, err := f.GetRows(sheetName) if err != nil { // 处理错误 } ``` 3. 创建一个新的Excel文件,遍历数据,根据学校名称进行筛选: ```go newFile, err := xlsx.NewFile() if err != nil { // 处理错误 } for _, row := range rows { school := row[schoolCol] // 取得当前行的学校名称 if school == "筛选条件" { // 这里替换为你的筛选逻辑 // 处理每一项数据,将其复制到新的工作表中 newRow := make([]string, len(row)) copy(newRow, row) sheet, err := newFile.AddSheet(sheetName) if err != nil { // 处理错误 } err = sheet.WriteRow(i, 0, newRow) // i是行号,0是索引从0开始 if err != nil { // 处理错误 } } } ``` 4. 最后保存新的Excel文件: ```go err = newFile.SaveAs("output_"+school+".xlsx") // 根据学校名称自动生成文件名 if err != nil { // 处理错误 } ``` 请注意,以上示例假设学校名称位于第一,且你需要筛选特定学校的记录。实际应用中,你可能需要根据实际情况调整代码,比如检查学校是否存在、处理可能的空值等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值