python csv转excel_将Excel文件转为csv文件的python脚本

将Excel文件转为csv文件的python脚本

#!/usr/bin/env python

__author__ = "lrtao2010"

'''

Excel文件转csv文件脚本

需要将该脚本直接放到要转换的Excel文件同级目录下

支持xlsx 和 xls 格式

在同级目录下生成名为excel_to_csv.csv 的文件,采用UTF-8编码

'''

import xlrd

import csv

import os

#生成的csv文件名

csv_file_name = 'excel_to_csv.csv'

def get_excel_list():

#获取Excel文件列表

excel_file_list = []

file_list = os.listdir(os.getcwd())

for file_name in file_list:

if file_name.endswith('xlsx') or file_name.endswith('xls'):

excel_file_list.append(file_name)

return excel_file_list

def get_excel_header(excel_name_for_header):

#获取表头,并将表头全部变为小写

workbook = xlrd.open_workbook(excel_name_for_header)

table = workbook.sheet_by_index(0)

#row_value = table.row_values(0)

row_value = [i.lower() for i in table.row_values(0)]

return row_value

def read_excel(excel_name):

#读取Excel文件每一行内容到一个列表中

workbook = xlrd.open_workbook(excel_name)

table = workbook.sheet_by_index(0) #读取第一个sheet

nrows = table.nrows

ncols = table.ncols

# 跳过表头,从第一行数据开始读

for rows_read in range(1,nrows):

#每行的所有单元格内容组成一个列表

row_value = []

for cols_read in range(ncols):

#获取单元格数据类型

ctype = table.cell(rows_read, cols_read).ctype

#获取单元格数据

nu_str = table.cell(rows_read, cols_read).value

#判断返回类型

# 0 empty,1 string, 2 number(都是浮点), 3 date, 4 boolean, 5 error

#是2(浮点数)的要改为int

if ctype == 2:

nu_str = int(nu_str)

row_value.append(nu_str)

yield row_value

def xlsx_to_csv(csv_file_name,row_value):

#生成csv文件

with open(csv_file_name, 'a', encoding='utf-8',newline='') as f: #newline=''不加会多空行

write = csv.writer(f)

write.writerow(row_value)

if __name__ == '__main__':

#获取Excel列表

excel_list = get_excel_list()

#获取Excel表头并生成csv文件标题

xlsx_to_csv(csv_file_name,get_excel_header(excel_list[0]))

#生成csv数据内容

for excel_name in excel_list:

for row_value in read_excel(excel_name):

xlsx_to_csv(csv_file_name,row_value)

print('Excel文件转csv文件结束 ')

©著作权归作者所有:来自51CTO博客作者lrtao2010的原创作品,如需转载,请注明出处,否则将追究法律责任

noavatar_middle.gif

lrtao2010

43篇文章,22W+人气,0粉丝

个人记载,别无它用,如有侵权,请告知改正

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

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

相关文章

前端多图片上传怎么控制顺序_Web前端经典面试题有哪些 如何能走向高薪之路...

Web前端经典面试题有哪些?如何能走向高薪之路?Web前端在近几年是越来越火热了,很多人看到了前端的高薪资,更看到了前端行业的发展前景,所以纷纷投入到学习前端技术学习中来。下面给大家总结整理一些Web前端经典面试题&…

解决windows指纹登录不灵问题

原因:不是指纹设备问题,是windows把指纹设备关了。 解决方法:进入设备管理器,找到生物指纹,按下图操作

OSI七层模型白话解释

各层设备 应用层……………….计算机:应用程序,如FTP,SMTP,HTTP 表示层 ……………….计算机:编码方式,图像编解码、URL字段传输编码 会话层 ……………….计算机:建立会话,SESSI…

利用类定义一个指针会调用默认构造函数吗_C++的拷贝构造函数

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象,并从…

51CTO会员开通成功!开森!

很好,是理想中的学习平台,果断买了!^_^ 开森ing 转载于:https://blog.51cto.com/13601545/2324935

一个请求多个响应_一个TCP连接到底可以发多少个HTTP请求?

曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连…

小米大数据:借助Apache Kylin打造高效、易用的一站式OLAP解决方案

如今的小米不仅是一家手机公司,更是一家大数据与人工智能公司。随着小米公司各项业务的快速发展,数据中的商业价值也愈发突显。而与此同时,各业务团队在数据查询、分析等方面的压力同样正在剧增。因此,为帮助公司各业务线解决这些…

旧电脑升级Win11

2014年的联想Y430P升级成功 升级很简单 第一步:下载win11系统安装包,下载地址:系统之家 - Win11系统 第二步:下载KMS激活工具,下载地址:https://www.jb51.net/softs/668522.htmlhttps://www.jb51.net/sof…

万用表测线路断点位置_如何测出电线电缆断点在哪?来看看常见的7种方法

实际工程维护检修中,对于维修人员来说最怕的莫过于碰到电线电缆中间断了找不出断点在什么地方。虽然我们弱电工程实际维修的时候,碰到线缆问题会直接想办法换线或者重新敷设,但是我们今天讨论技术上有哪些方法可以测出线缆的断点!…

你真的会用OneNote吗?

你真的会用OneNote吗?_程序媛一枚-CSDN博客前言特色功能图片转文字TAB制表符新建表格表格嵌套自动编号保存微信文稿树形目录基本功能总结前言使用OneNote做笔记已经有一年多的时间了,从最开始的抵触,到现在的习惯,心态的转变主要是…

大道至简: 拉新、促活和留存

互联网运营中的拉新、促活和留存思维,从来不局限于互联网产品里,在传统行业里也是通用的,比如一家理发店的经营也是如此。 互联网运营中的拉新、促活和留存思维,从来不局限于互联网产品里,在传统行业里也是通用的。比如…

python3的pyqt5 qtablewidget按数据大小排列_InnoDB为什么要选择B+树来存储数据?

关于InnoDB索引,我们可能知道InnDB索引是用B树实现的,而B树就是一种能优化查询速度的数据结构。但我们又没想过这样一个问题,能优化查询速度的数据结构有很多,为什么InnoDB要采用B树?常见优化查询速度数据结构哈希表哈…

百家号 不被推荐,原因:将旧闻冒充新闻发布,请修改后重新发布

1.情景展示 在百家号进行创作的作者,发布文章时,难免会遇到审核不通过,下面说一下其中一种情况: 不被推荐,原因:将旧闻冒充新闻发布,请修改后重新发布. 2.解决方案 出现这种情况,原…

java字符串常量池——字符串==比较的一个误区

转自:https://blog.csdn.net/wxz980927155/article/details/81712342 起因 再一次js的json对象的比较中,发现相同内容的json对象使用比较并不相等。 例如: var obj {}; var obj2 {}; console.log(obj obj2); // 结果为false json在js中代表…

java注解_Java注解教程及自定义注解

Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容。在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解。Java1.5引入了注解,当前许多java框架中大量使用注解…

Git设置忽略eclipse配置文件

概述 eclipse的配置文件是不能公用的,不同电脑上的eclipse配置文件内容是不一样的,如果将eclipse配置文件上传到了git,其他开发下载后,导入项目,有些报错就是因为配置文件关系 操作 在git的忽略文件“.gitignore”里…

jdk安装包_第一章(第1节):安装JDK

对于 jdk 的安装,网上有很多种图文解说,但是老鸟发现它们大都不严谨,非常不适合小白。本节课,老鸟就给大家做个小白教程,无论你多么菜,你一定可以安装上,否则你加我微信,我给你打五毛…

eclipse 国内镜像高速下载

概述 eclipse是优秀的老牌IDE,使用eclipse是一种身份的象征,代表了老程序员。eclipse每年都会更新,也越来越好用。但下载的时候,速度一直有点慢,eclipse官网提供了国内镜像,下载很快。 操作步骤 第一步&…

matlab图像去毛刺_警微圈 图像处理第三讲CLAHE

警微圈图像处理100讲 第三讲《限制对比度自适应直方图均衡化》- 圈语 -为给圈粉们提供一些结合公安工作的实用图像处理方法,小编为大家准备了一些程序处理算法(附带代码)。小编使用的图像处理软件是matlab(该软件关注警微圈后台回复“matlab”即可获得下载资源)&…