python主要是使用第三方模块库xlrd、xlwt、xluntils、pyExcelerator和Pandas来处理excel文件数据。

impor xlrd #未使用时为灰色 xlrd版本选择1.2版本,更加稳定(并不是越高的版本就越好用)
import xlrd
print(type(xlrd))
wb=xlrd.open_workbook("1234.xlsx") #使用xlrd模块下面的open_workbook函数打开对象,并赋给wb
wbst=wb.sheet_names() #wb工作簿下面的所有sheet名再赋值
print(wbst) |
运行结果: <class 'module'> ['Sheet1', 'Sheet2', 'Sheet3']
类型为module,有3个sheet表。
xlwings库操作Excel
在我们操作之前可以先了解下,如下内容:
新建:创建一个不存在的工作薄或者工作表
打开:打开一个已经存在的工作薄
引用:就是告诉程序,你要操作哪个对象。比如你打开了A、B、C三个工作薄,现在你想操作A工作薄,就要先引用A
激活:我们可以同时打开多个工作薄,但是一次只能操作一个工作簿,我们正在操作的这个工作薄称为**当前活动工作薄
下图便于理解xlwings的结构层次。
-
Excel程序用App来表示,多个Excel程序集合用Apps表示;
-
单个工作簿用Book表示,工作簿集合用Books表示;
-
单个工作表用Sheet表示,工作表集合用Sheets表示;
-
区域用Range表示,既可以是一个单元格,也可以是一片单元格区域。
 1、设置Excel操作模式 1)语法:App(visible=False, add_book=False) 2)语法释义:表示处理过程是否可视,也就是处理Excel的过程会不会显示出来,即是否出现Excel的界面,add_book表示是否打开新的Excel程序,也就是是不是打开一个新的excel窗口,如果为True,且visible为True,则立即打开一个空白的Excel
import xlwings
app=xlwings.App(visible=True,add_book=False) |
设置参数visible:用来设置程序是否可见,True表示可见(默认),Flase不可见。 add_book用来设置是否自动创建工作簿,True表示自动创建(默认),False不创建。当设置成add_book=False时,可以创建App,但是还未生成PID,只有当这个App创建了工作簿后,才会生成自己的PID 。
2、打开文件 1)方法1:app.books.open(文件名),其中的app为设置Excel操作模式中App方法返回的结果 2)方法2:Book(文件名)
这两种方法打开文件返回的结果类型是相同的,类型为xlwings.main.Book,二者的差别经验证测试,发现如果是在对应文件已经打开的情况下,使用app.books.open再去打开可以重复打开,但Book不会重复打开。且如果是一个程序内多次调用app.books.open打开同一个文件也不会重复打开。 经过测试,2种方式运行后,对于已经打开的文件,执行代码会再次打开,只是以只读的方式打开罢了。
使用方法一时,必须说明操作模式。而使用方法二,则不需要说明操作模式。
xlwings对.xlsx文件中的工作表索引值是从“1”开始的,而对.xls文件中的工作表索引值是从“0”开始的!!!
import xlwings as xw wb = xw.Book('test.xls') sheet = wb.sheets['Sheet1'] #将sheet1工作表复制到另外一个工作簿dst.xls中最后个工作表之后 wb_dst=xw.Book("dst.xls") ws_dst=wb_dst.sheets[-1] sheet.api.Copy(After=ws_dst.api) |
最后说第二个方法:xlwings0.22以上版本的原生copy方法
# Create two books and add a value to the first sheet of the first book first_book = xw.Book() second_book = xw.Book() first_book.sheets[0]['A1'].value = 'some value' # Copy to same Book with the default location and name first_book.sheets[0].copy() # Copy to same Book with custom sheet name first_book.sheets[0].copy(name='copied') # Copy to second Book requires to use before or after first_book.sheets[0].copy(after=second_book.sheets[0]) |
https://blog.csdn.net/qfxietian/article/details/123822358
|