需求

将某个目录下多个特定文本文件,合并到excel表中。并要求将文件名作为sheet名,每个sheet中第一行第一个单元格填写对应文件的所在路径,单元格格式使用Times New Roman。

使用方法:

# yourdir: 输入多个特定文件所在目录
# end_str: 以end_str结尾的特定文件(要进性合并的文件)
# outout_xlsx: 指定输出的excel文件名
# suffix: 为了获取sheet名,用于分割的字符(串),然后去除该分割(串)符之后的字符
# prefix: 如果文件前缀有该字符(串),将去除该字符(串)之前的字符
python merge_tsv2xlsx.py ${yourdir} ${end_str} ${outout_xlsx} ${suffix} ${prefix}

示例:

# 比如"/your/files/dir"目录下有如下文件:
$ ls /your/files/dir
a.1.spe.tsv
a.2.spe.tsv
a.3.spe.tsv
a.x.spe.txt
# 合并该目录下所有.spe.tsv文件,并将sheet名命名为1,2,3,4
python merge_tsv2xlsx.py /your/files/dir .tsv /your/files/dir/a.merge.spe.xlsx .spe.tsv a.

注:后两个参数用于去除不需要的字符,如果不对前缀和后缀去除,直接设定为""(空)。

合并后的excel示例:

实现

命名为merge_tsv2xlsx.py

import sys
import os
import openpyxl
import pandas as pd
from openpyxl.styles import Font
from openpyxl.cell import WriteOnlyCell
from openpyxl.comments import Commenttsv_dir = sys.argv[1]
end_str = sys.argv[2]  # eg: .txt
xlsx_out = sys.argv[3]
split_str = sys.argv[4]  # sheet name from split filename
start_str = sys.argv[5]  # sheet name: rm start str of filenamedef str2num(str_a):try:n = float(str_a)except ValueError as e:# print("NOTE: not num: ", str_a)n = str_afinally:passreturn ndef write_tsv2xlsx(tsv_file, sheet_name, xlsx_file):wb = openpyxl.load_workbook(xlsx_file)ws = wb.create_sheet(title=sheet_name, index=0)cell = WriteOnlyCell(ws, value=tsv_file)cell.font = Font(name='Times New Roman', size=11, color="D3D3D3")cell.comment = Comment(text="FilePath", author="yourname")ws.append([cell])with open(tsv_file, 'r') as f_in:for line in f_in:line_info_tmp = line.strip().split('\t')# line_info = [str2num(s) for s in line_info_tmp]# ws.append(line_info)cells = []for s in line_info_tmp:cell = WriteOnlyCell(ws, value=s)cell.font = Font(name='Times New Roman', size=11)cells.append(cell)ws.append(cells)wb.save(xlsx_file)def merge_all_tsv():for file_n in os.listdir(tsv_dir):if not file_n.endswith(end_str):continuetsv_file_path = os.path.join(tsv_dir, file_n)if split_str:sname = file_n.split(split_str)[0]else:sname = file_nif start_str:name = sname.split(start_str)[1]else:name = snameprint("#NOTE:%s file is writed to xlsx %s!" % (tsv_file_path, xlsx_out))write_tsv2xlsx(tsv_file_path, name, xlsx_out)if __name__ == '__main__':if os.path.isfile(xlsx_out):print("**ERROR**: %s exists! Please change .xlsx file name" % xlsx_out)sys.exit(1)df_xlsx = pd.DataFrame()df_xlsx.to_excel(xlsx_out)merge_all_tsv()

【python】将多个tsv文件合并到excel表中相关推荐

  1. Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet

    Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet 发表时间:2020-04-26 问题:从当前目录或子目录中查询符合条件的excel表格,并从这 ...

  2. Python 实现通过Baidu地图批量自动查询Excel表中各单位的地址

    本程序通过selenium模块模拟打开baidu地图网页,输入公司名称来查询地址,最后采用BeautifulSoup模块实现公司地址提取. 采用openpyxl模块读取Excel的.xlsx后缀文件并 ...

  3. .data文件导入到excel表中(以马疝病为例)

    步骤如图: step1: step2  step3:将.data文件转换为.txt文件 step4:打开wps step5: step6:  step7 step8 step9 step10

  4. 使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本

    使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本 文章目录 使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本 前言: 背景 tm ...

  5. Python 读pdf数据写入Excel表中

    ​ ​ 活动地址:CSDN21天学习挑战赛 目录 一.Python操作PDF的库有很多 二.pdflumber作为案例讲解使用 2.安装配置 2.加载PDF 3.读取pdf文档信息 1)读取pdf文档 ...

  6. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  7. Python处理Excel表中单元格带有换行的数据

    Python处理Excel表中单元格带有换行的数据 文章目录 Python处理Excel表中单元格带有换行的数据 问题样式 实例问题 实例实现代码 实例结果 问题样式 在数据处理过程中常常会遇到这样一 ...

  8. python爬虫BeautifulSoup库抓取500彩票网竞彩足球信息并在excel表中对中奖赔率设置格式

    目录 前言 数据的储存 格式设置 代码 结果展示 疑惑 前言 上一篇博客记录了使用BeautifulSoup模块抓取500彩票网竞彩足球赛果及赔率,但最后呈现的数据不够细致和美观,对最终开奖的赔率没有 ...

  9. python怎么导入sql数据库,##使用python将excel表中数据导入sql server数据库

    如何用python将excel数据导入到postgresql数据库中 把excel表格另存为csv文件 python将exce文件含有多个sheet同时l导入sqlserver数据库 需要使用xlrd ...

最新文章

  1. 《深入理解Spark:核心思想与源码分析》——3.10节创建和启动ExecutorAllocationManager...
  2. 二.安全NA之ASA基础
  3. Software develop Model
  4. I had no sooner finished eating than went to toilet.
  5. 计算机英语 传输介质,计算机英语实用教程unit7
  6. 2016-2017-20155329 《Java程序设计》第7周学习总结
  7. java arraylist 合并_在Java中将两个arrayList合并到一个新的arrayList中,没有重复且没有顺序...
  8. 博客园markdown公式
  9. opencv 学习之 亮度检测
  10. 手机远程控制软件和开源框架
  11. 电脑从硬盘启动计算机,电脑怎么设置第一启动项为硬盘
  12. 化解仓储难题,WMS智能仓储系统解决方案
  13. 计算机不认2t移动硬盘,win7系统无法识别2T希捷的硬盘的解决方法
  14. @Scheduled同步多线程配置
  15. Q3亏损收窄预计Q4季度实现盈利,趣头条走上盈利分水岭靠什么?
  16. 众恒微拓科技:品质退款率怎么优化
  17. 腾讯云学生服务器官网地址-腾讯云学生服务器如何购买
  18. 非因推荐 | 肿瘤微环境研究大剖析——肿瘤相关巨噬细胞
  19. [转]Go在谷歌:以软件工程为目的的语言设计
  20. 树莓派安装Samba服务构建家庭NAS

热门文章

  1. 【微信小程序】Vant Weapp
  2. VC++ 创建桌面、开始菜单快捷方式(附源码)
  3. RV1126新增驱动IMX415 SENSOR,实现v4l2抓图
  4. 学习python了,看完这篇文章,你的Linux基础就差不多了(附导图】
  5. react 中使用Swiper轮播图插件
  6. 三轮电摩专用之48V动力锂电池组-产品规格书
  7. 局域网ip扫描工具_让你局域网里聊天、发送图片、视频与文件
  8. WEB页面验证码自动识别并填充
  9. 探究fontsize与字体height关系
  10. Cleave input输入框 自动格式化内容