合并数据 - 合并多个Excel文件并转成CSV - Python代码

在工作中,有时候因为部门间的数据权限问题,推送数据的时候往往是通过邮件完成,对于量大的数据,往往会拆成很多个excel发送,到下一个部门导入数据库之前,总是需要先将所有excel合成一个excel,再导入数据库。手动操作往往受限于各种因素,嫌麻烦?打开excel太慢浪费时间?需要上班之前导好表又不想每天都提前来上班?总之下面这个代码可以解救你:

# -*- coding: utf-8 -*-
#合并Excel文件import xlrd
import xlsxwriter#打开excel文件
def open_xls(file):fh=xlrd.open_workbook(file)#打开文件file,并读取到fh中return fh#获取excel中所有的sheet表
def getsheet(fh):return fh.sheets()#获取文件fh中所有的工作表#获取sheet表的行数
def getnrows(fh,sheet):table=fh.sheets()[sheet]return table.nrows#.nrows获取table表的行数#按行读取文件内容并依次写入datavalue
def getFilect(file,shnum):fh=open_xls(file)#调用open_xls函数,打开excel文件table=fh.sheets()[shnum]num=table.nrows#num表示table表的行数for row in range(num):rdata=table.row_values(row)#获取table表的第row行的数据,赋给rdatadatavalue.append(rdata)#依次将rdata添加到datavalue的末尾,每读取一行就写入一行return datavalue#获取fh文件中sheet表的个数
def getshnum(fh):x=0sh=getsheet(fh)for sheet in sh:x+=1return xif __name__=='__main__':#将需要合并的excel文件形成列表allxlsallxls=['E:\\pythondata\\union\\test_0.xlsx','E:\\pythondata\\union\\test_1.xlsx']#存储所有读取的结果datavalue=[]for fl in allxls:#遍历所有需要合并的excel文件fh=open_xls(fl)#打开excel文件x=getshnum(fh)#获取文件中sheet表的个数for shnum in range(x):#遍历当前excel文件的所有sheet表print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")#提示进度rvalue=getFilect(fl,shnum)#将从当前sheet表中读取的所有数据写入rvalue#定义最终合并后生成的新文件endfile='E:\\pythondata\\union\\test_3.xlsx'#合并文件所处的位置与定义文件名wb1=xlsxwriter.Workbook(endfile)#创建一个sheet工作对象ws=wb1.add_worksheet()#遍历rvalue中的所有单元格,并将读取的单元格的值写入合并后的文件中for a in range(len(rvalue)):#遍历rvalue所有行for b in range(len(rvalue[a])):#遍历rvalue的第a行的所有列,即实现所有单元格的遍历c=rvalue[a][b]#获取第a行第b列的值ws.write(a,b,c)#将第a行第b列的值c写入wswb1.close()#写入完成后关闭excel文件print("\n文件合并完成!!!\nExcel文件所处位置:"+str(endfile))#提示合并结束

合并完成后的excel文件往往是很大的,直接使用excel文件导入数据库的时候,容易出现各种漏数据的问题。那么就把它转化成csv吧:

#将合并后的excel文件转化成csv,方便导入数据库
import pandas as pdfile='E:\\pythondata\\union\\test_3.xlsx'
outfile='E:\\pythondata\\union\\test_3.csv'def xlsx_to_csv_pd():data_xls = pd.read_excel(file, index_col=0)data_xls.to_csv(outfile, encoding='utf-8')if __name__ == '__main__':xlsx_to_csv_pd()
print("\n转化完成!!!\nCSV文件所处位置:"+str(outfile))

运行结果:

正在读取文件:E:\pythondata\union\test_0.xlsx的第0个sheet表的内容...
正在读取文件:E:\pythondata\union\test_0.xlsx的第1个sheet表的内容...
正在读取文件:E:\pythondata\union\test_1.xlsx的第0个sheet表的内容...文件合并完成!!!
Excel文件所处位置:E:\pythondata\union\test_3.xlsx转化完成!!!
CSV文件所处位置:E:\pythondata\union\test_3.csv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 524. 通过删除字母匹配到字典里最长单词(双指针)

1. 题目 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。 如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。 示例 1: 输入…

poj 3748 位操作

#include<iostream> //位运算using namespace std;int main(){int r,x,y; scanf("%x,%d,%d",&r,&x,&y); rr&(~(1<<x)); rr|(1<<y); rr|(1<<(y-1)); rr&(~(1<<(y-2))); printf("%x\…

Python - Excel文件与CSV文件相互转化

Excel文件转化成CSV - pandas #excel文件转化成csv import pandas as pdfileE:\\pythondata\\union\\test_3.xlsx outfileE:\\pythondata\\union\\test_3.csvdef xlsx_to_csv_pd():data_xls pd.read_excel(file, index_col0)data_xls.to_csv(outfile, encodingutf-8)if __nam…

LeetCode 743. 网络延迟时间(最短路径)

文章目录1. 题目2. 解题2.1 弗洛伊德1. 题目 有 N 个网络节点&#xff0c;标记为 1 到 N。 给定一个列表 times&#xff0c;表示信号经过有向边的传递时间。 times[i] (u, v, w)&#xff0c;其中 u 是源节点&#xff0c;v 是目标节点&#xff0c; w 是一个信号从源节点传递到…

SQL Server T-SQL高级查询

SQL Server T-SQL高级查询&#xff08;转&#xff09; 高级查询在数据库中用得是最频繁的&#xff0c;也是应用最广泛的。 基本常用查询 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from student…

逻辑回归 - sklearn (LR、LRCV、MLP、RLR)- Python代码实现

目录 LR&#xff08;LogisticRegression&#xff09; - 线性回归 LRCV&#xff08;LogisticRegressionCV &#xff09;- 逻辑回归 MLP&#xff08;MLPRegressor&#xff09; - 人工神经网络 RLR&#xff08;RandomizedLogisticRegression&#xff09;-随机逻辑回归 logisti…

LeetCode 810. 黑板异或游戏(博弈推理)

1. 题目 一个黑板上写着一个非负整数数组 nums[i] 。 小红和小明轮流从黑板上擦掉一个数字&#xff0c;小红先手。 如果擦除一个数字后&#xff0c;剩余的所有数字按位异或运算得出的结果等于 0 的话&#xff0c;当前玩家游戏失败。 (另外&#xff0c;如果只剩一个数字&#x…

[Socket]BSD socket简易入门

介绍 当你进入 UNIX 的神秘世界后&#xff0c;立刻会发现越来越多的东西难以理解。对于大多数人来说&#xff0c;BSD socket 的概念就是其中一个。这是一个很短的教程来解释他们是什么、他们如何工作并给出一些简单的代码来解释如何使用他们。 类比 (什么是 socket &#xff1f…

轻松看懂机器学习十大常用算法 - 基础知识

通过本篇文章可以对机器学习ML的常用算法有个常识性的认识&#xff0c;没有代码&#xff0c;没有复杂的理论推导&#xff0c;就是图解一下&#xff0c;知道这些算法是什么&#xff0c;它们是怎么应用的&#xff0c;例子主要是分类问题。 算法如下&#xff1a; 决策树随机森林算…

LeetCode 68. 文本左右对齐(字符串逻辑题)

1. 题目 给定一个单词数组和一个长度 maxWidth&#xff0c;重新排版单词&#xff0c;使其成为每行恰好有 maxWidth 个字符&#xff0c;且左右两端对齐的文本。 你应该使用“贪心算法”来放置给定的单词&#xff1b;也就是说&#xff0c;尽可能多地往每行中放置单词。必要时可…

VBA之六--EXCEL VBA两则

函数作用:自动获取指定月的工作日 ################################################################Sub 自动填充工作日(month1 As Integer)获取指定月份天数Dim days As IntegerDim xdate As Datexdate CDate("2008-" CStr(month1))初始化公共变量Col2的值col2…

数据离散化 - 等宽等频聚类离散 - Python代码

目录 等宽离散 等频离散 聚类离散 附录&#xff1a; rolling_mean函数解释 cut函数解释 其他数据预处理方法 一些数据挖掘算法中&#xff0c;特别是某些分类算法&#xff08;eg:ID3算法、Aprioroi算法等&#xff09;&#xff0c;要求数据是分类属性形式。因此常常需要将…

LeetCode 1444. 切披萨的方案数(DP)

1. 题目 给你一个 rows x cols 大小的矩形披萨和一个整数 k &#xff0c;矩形包含两种字符&#xff1a; ‘A’ &#xff08;表示苹果&#xff09;和 ‘.’ &#xff08;表示空白格子&#xff09;。 你需要切披萨 k-1 次&#xff0c;得到 k 块披萨并送给别人。 切披萨的每一刀…

C#动态调用Web服务的3种方法

我们在开发C# WinForm时&#xff0c;有时会调用Web服务&#xff0c;服务是本地的当前好办&#xff0c;只要在Project中的Web References中引入就可以在代码中直接创建一个Web服务对象来引用&#xff0c;其实其原理是C#帮你自动创建客户端代理类的方式调用WebService&#xff0c…

合并数据 - 方法总结(concat、append、merge、join、combine_first)- Python代码

描述 分析一个业务的时候往往涉及到很多数据&#xff0c;比如企业融资信息、投资机构信息、行业标签、招聘数据、政策数据等&#xff0c;这些数据分别存储在不同的表中。通过堆叠合并和主键合并等多种合并方式&#xff0c;可以将这些表中需要的数据信息合并在一张表中供分析使…

LeetCode 592. 分数加减运算(字符串+最大公约数)

1. 题目 给定一个表示分数加减运算表达式的字符串&#xff0c;你需要返回一个字符串形式的计算结果。 这个结果应该是不可约分的分数&#xff0c;即最简分数。 如果最终结果是一个整数&#xff0c;例如 2&#xff0c;你需要将它转换成分数形式&#xff0c;其分母为 1。 所以在…

18、Linux下编程风格

在前面曾总结过微软环境下编程的规范【1】&#xff0c;但是在linux下&#xff0c;没有自动补起&#xff0c;以及没有像VS那样高级好用的可视化开发工具&#xff0c;如果变量&#xff0c;函数定义太复杂&#xff0c;敲的也累&#xff0c;下面总结linux下编程风格&#xff0c;资料…

获取数据 - 将Excel文件读入矩阵matrix中 - Python代码

机器学习中&#xff0c;很多算法的计算逻辑是基于数学的&#xff0c;免不了求特征值和特征向量这种事情&#xff0c;因此&#xff0c;在数据预处理的时候&#xff0c;将数据源中的数据转储成矩阵格式是很有必要的。 原数据&#xff1a; 代码&#xff1a; import numpy as np…

LeetCode 713. 乘积小于K的子数组(滑动窗口)

1. 题目 给定一个正整数数组 nums。 找出该数组内乘积小于 k 的连续的子数组的个数。 示例 1: 输入: nums [10,5,2,6], k 100 输出: 8 解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。 需要注意的是 [10,5,2] 并不是乘积小于…

Visual Studio 2010 调试 C 语言程序

转&#xff1a;http://woyouxian.net/c/using_visual_studio_write_pure_ansi_c_program.html 本篇文章讲述如何用微软的 Visual Studio 编写纯C语言程序&#xff0c;这里的纯C语言&#xff0c;指的是 ANSI C 语言。 要在 Visual Studio 里创建一个 ANSI C语言程序&#xff0c;…