1. 首页
  2. Python

python中如何操纵Execl?用到这个模块轻松解决

“u003Cdivu003Eu003Cpu003Epython操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是用来储存数据。二、除了操作数据,还可以调整Excel文件的表格宽度、字体颜色等。另外需要提到的是用COM调用Excel的API操作Excel文档也是可行的,相当麻烦基本和VBA没有区别。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F1494962a90054aef91309137f4600e57″ img_width=”320″ img_height=”180″ alt=”python中如何操纵Execl?用到这个模块轻松解决” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E但是用到Xlwings,这个是我认为的Python最强大的处理Excel的库。u003Cu002Fpu003Eu003Cpu003E话不多说,直接上代码:u003Cu002Fpu003Eu003Cpu003E引入库u003Cu002Fpu003Eu003Cpreu003Eimport xlwings as xw u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E打开Excel程序,默认设置:程序可见,只打开不新建工作薄u003Cu002Fpu003Eu003Cpreu003Eapp = xw.App(visible=True,add_book=False)u003Cbru003E#新建工作簿 (如果不接下一条代码的话,Excel只会一闪而过)u003Cbru003Ewb = app.books.add()u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E打开已有工作簿(支持绝对路径和相对路径)u003Cu002Fpu003Eu003Cpreu003Ewb = app.books.open(‘example.xlsx’)u003Cbru003E#练习的时候建议直接用下面这条u003Cbru003E#wb = xw.Book(‘example.xlsx’)u003Cbru003E#这样的话就不会频繁打开新的Excelu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E保存工作簿u003Cu002Fpu003Eu003Cpreu003Ewb.save(‘example.xlsx’)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E退出工作簿(可省略)u003Cu002Fpu003Eu003Cpreu003Ewb.close()u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E退出Excelu003Cu002Fpu003Eu003Cpreu003Eapp.quit()u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E引用Excel工作表,单元格u003Cu002Fpu003Eu003Cpu003E引用工作表u003Cu002Fpu003Eu003Cpreu003Esht = wb.sheets[0]u003Cbru003E#sht = wb.sheets[第一个sheet名]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E引用单元格u003Cu002Fpu003Eu003Cpreu003Erng = sht.range(‘a1’)u003Cbru003E#rng = sht[‘a1’]u003Cbru003E#rng = sht[0,0] 第一行的第一列即a1,相当于pandas的切片u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E引用区域u003Cu002Fpu003Eu003Cpreu003Erng = sht.range(‘a1:a5’)u003Cbru003E#rng = sht[‘a1:a5’]u003Cbru003E#rng = sht[:5,0]u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F7e95b8cd0fdd47efb07d84623539da03″ img_width=”400″ img_height=”251″ alt=”python中如何操纵Execl?用到这个模块轻松解决” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E重头戏:写入数据u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E(xlwings多个单元格的写入大多是以表格形式)u003Cu002Fpu003Eu003Cpu003E选择起始单元格A1,写入字符串‘Hello’u003Cu002Fpu003Eu003Cpreu003Esht.range(‘a1’).value = ‘Hello’u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E默认按行插入:A1:D1分别写入1,2,3,4u003Cu002Fpu003Eu003Cpreu003Esht.range(‘a1’).value = [1,2,3,4]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E等同于u003Cu002Fpu003Eu003Cpreu003Esht.range(‘a1:d1’).value = [1,2,3,4]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E按列插入: A2:A5分别写入5,6,7,8u003Cu002Fpu003Eu003Cpu003E你可能会想u003Cu002Fpu003Eu003Cpreu003E*sht.range(‘a2:a5’).value = [5,6,7,8]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E但是你会发现xlwings还是会按行处理的,上面一行等同于u003Cu002Fpu003Eu003Cpreu003E*sht.range(‘a2’).value = [5,6,7,8]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E正确语法:u003Cu002Fpu003Eu003Cpreu003Esht.range(‘a2’).options(transpose=True).value = [5,6,7,8]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E既然默认的是按行写入,我们就把它倒过来嘛(transpose),单词要打对,如果你打错单词,它不会报错,而会按默认的行来写入(别问我怎么知道的)u003Cu002Fpu003Eu003Cpu003E我们输入信息的时候往往不只是写入一行或一列,u003Cu002Fpu003Eu003Cpu003E多行输入就要用二维列表了:u003Cu002Fpu003Eu003Cpreu003Esht.range(‘a6’).expand(‘table’).value = [[‘a’,’b’,’c’],[‘d’,’e’,’f’],[‘g’,’h’,’i’]]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E说完了写入就该讲读取了,记住了写入,读取就简单了u003Cu002Fpu003Eu003Cpu003E读取A1:D4(直接填入单元格范围就行了)u003Cu002Fpu003Eu003Cpreu003Eprint(sht.range(‘a1:d4’).value)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E返回的值是列表形式,多行多列为二维列表,但有一点要注意,返回的数值默认是浮点数u003Cu002Fpu003Eu003Cpreu003Ea = sht.range(‘a1:d1’).valueu003Cbru003Eprint(a)u003Cbru003Efor i in a:u003Cbru003E print(i)u003Cbru003E print(type(i))u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F30386c2de5174e0a94fad039bc73d00f” img_width=”587″ img_height=”221″ alt=”python中如何操纵Execl?用到这个模块轻松解决” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E读取excel的第一列怎么做?u003Cu002Fpu003Eu003Cpreu003E*a = sht.range(‘a:a’).valueu003Cbru003Eprint(len(a))u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F92b550cea180421cb63914606339bab3″ img_width=”575″ img_height=”30″ alt=”python中如何操纵Execl?用到这个模块轻松解决” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E你将会得到一个1048576个元素的列表,也就是空值也包含进去了,所以这种方法不行u003Cu002Fpu003Eu003Cpu003E思路:先计算单元格的行数(前提是连续的单元格)u003Cu002Fpu003Eu003Cpreu003Erng = sht.range(‘a1’).expand(‘table’)u003Cbru003Enrows = rng.rows.countu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E接着就可以按准确范围读取了u003Cu002Fpu003Eu003Cpreu003Ea = sht.range(f’a1:a{nrows}’).valueu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E同理选取一行的数据也一样u003Cu002Fpu003Eu003Cpreu003Encols = rng.columns.countu003Cbru003E#用切片u003Cbru003Efst_col = sht[0,:ncols].valueu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E对此,你有什么不懂的呢?欢迎写在评论中!u003Cu002Fpu003Eu003Cpu003E最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:python中如何操纵Execl?用到这个模块轻松解决

主题测试文章,只做测试使用。发布者:逗乐男神i,转转请注明出处:http://www.cxybcw.com/12930.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code