当前位置: 首页 > news >正文

python 实现批量 csv文件 转化为 execl...

目标

将多个CSV文件,合并到一个Excel文件中的,多个sheet工作表。

前言

网上大多方法都是将csv直接合并在一起,也不分别创建sheet表。
还有一些解答说CSV不支持合并到多个sheet表。
python 实现批量 csv文件 转化为 execl...

网上有用宏命令的,我试了,但是只能导入一个sheet表。也有用python的,大多都没什么用。

尽管困难重重,最后终于还是利用pandas库实现了目标。

开始

下面的代码用到了,两个带数据的csv文件。(2019-04-01.csv和2019-04-02.csv)

import pandas as pd
writer = pd.ExcelWriter('test.xlsx')
data1 = pd.read_csv("2019-04-01.csv", encoding="gbk")
data2 = pd.read_csv("2019-04-02.csv", encoding="gbk")
data1.to_excel(writer,sheet_name='2019-04-01')
data2.to_excel(writer,sheet_name='2019-04-02')
writer.save()

第一步需要导入pandas库。

之后需要用pandas.read_csv为每个csv建立一个dataframe

有了dataframe,就可以把它转成Excel中的一个表。最后保存。

上面的代码就是把2019-04-01.csv和2019-04-02.csv导入到test.xlsx表格中,同时为它俩分别创建2019-04-01,2019-04-02两个sheet工作表。

运行

运行后打开test.xlsx。效果如下。
python 实现批量 csv文件 转化为 execl...

美化

尽管已经实现了目标,但是第一列不正常。多了一列行号
python 实现批量 csv文件 转化为 execl...

所以还需要修改一下,让行号这列去掉。方法非常简单。加个参数index_col=0

data1 = pd.read_csv("2019-04-01.csv", encoding="gbk",index_col=0)
data2 = pd.read_csv("2019-04-02.csv", encoding="gbk",index_col=0)

删掉刚才的test.xlsx。再次运行一下。效果如下:
python 实现批量 csv文件 转化为 execl...

完美解决!

补充

在更多情况下,我们并不想一个一个地输入文件名。而是把所有要处理的csv文件放在一个文件夹中。让python自动读取这些csv文件,并创建一个Excel文件,以及自动将文件名作为sheet导入到Excel文件中。

代码:

import pandas as pd
import os

newdir = 'G:\编程代码\python代码\表格\\new'
list = os.listdir(newdir)  # 列出文件夹下所有的目录与文件

writer = pd.ExcelWriter('步数.xlsx')

for i in range(0,len(list)):
    data = pd.read_csv(list[i],encoding="gbk", index_col=0)
    data.to_excel(writer, sheet_name=list[i])


writer.save()

如果你看不懂是怎么遍历文件名的:
Python 获取,列出 指定文件夹目录内 所有文件名 - 兔子昂


参考:
将多个dataframe 以多个sheet的形式保存到 一个excel文件中
python - Remove Unnamed columns in pandas dataframe

相关文章:

  • js 搜索子字符串 判断是否是子串 的方法
  • 禁用css 的浏览器插件 Web Developer
  • Baconian (Stegano, Encoding, C..的解法
  • mac直接修改压缩包
  • servlet获取ApplicationContext容器对象
  • org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[createStandardContext]时发生异常
  • java.lang.ClassNotFoundException: org.springframework.context.support.ClassP
  • maven web-app没有新建servlet
  • org.springframework.beans.factory.BeanCreationException 一个解决方法
  • 注解支持的元素类型
  • LSB (Stegano, Image, Training) Write up
  • steganabara-1.1.1.jar
  • SpringMVC返回消息中文乱码的解决方法
  • NoSuchBeanDefinitionException: No bean named ‘cacheManager‘ available的一个解决方式
  • tomcat 首页404的一个解决方案
  • echarts的各种常用效果展示
  • jquery cookie
  • MD5加密原理解析及OC版原理实现
  • oschina
  • Promise初体验
  • 分享一份非常强势的Android面试题
  • 类orAPI - 收藏集 - 掘金
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • MyCAT水平分库
  • 第二十章:异步和文件I/O.(二十三)
  • #FPGA(基础知识)
  • (2)STM32单片机上位机
  • (23)Linux的软硬连接
  • (9)目标检测_SSD的原理
  • (第一天)包装对象、作用域、创建对象
  • (多级缓存)多级缓存
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十五)使用Nexus创建Maven私服
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)重识new
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core Swagger 过滤部分Api
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net下简单快捷的数值高低位切换
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [AR Foundation] 人脸检测的流程
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C++]AVL树怎么转
  • [hive] 窗口函数 ROW_NUMBER()
  • [leetcode 双指针]