Python读写Excel

2018-09-18  本文已影响0人  波洛的汽车电子世界

任务:读取excel 表格的某些行列,用python做随机抽取,再将结果写入另一个excel表格里面。

使用的库:OpenPyXL

  1. 先导入所需的库。
from openpyxl import load_workbook
from openpyxl import Workbook
import random
  1. 读取输入表格。
wb_in = load_workbook(filename='path1/wb1.xlsx', read_only=True)

得到的wb_in就是一个workbook对象。

接下来通过表格的名字即可读入所有的表格。

例如,第一个表格的名字是"sheet1", ws_sheet1就是第一个表格。

wsheet_in = wb_in['sheet1']

如果不知道表格的名字,则可以用[get_sheet_names] 得到名字。

for name in wb_in.get_sheet_names():
    wsheet_in = wb_in[name]

这样就得到了wb_in这个工作簿的所有表格。

得到了表格,接着就可以按单元格来处理了。
如果要获得某个单元格,可用wsheet_in['A2'],如果要得到某个单元格的值,用wsheet_in['A4'].value

但是excel中,按单元格处理的效率太低,最常用的还是按行列处理数据。
如果要得到行,用wsheet_in.rows,这是生成器类型,不能使用索引,转换成list之后再使用索引。
例如,可以得到前两行:x,y = list(wsheet.rows)[:2]

可以遍历每一行:

for row in wsheet_in.rows:
    print(row)

可以用len(list(wsheet.columns))来判断写入的时候应该从哪一行开始写,防止覆盖。
同样的,得到一列,用wsheet_in.columns
得到一个区域,用切片,cells = wsheet['A1':'D10']

  1. 随机选取的结果,写入已有工作簿的新表格中。
    如果已有工作簿,需要建立新的表格。那么先新建一个workbook对象,再在这里新建sheet。
wb_out = load_workbook('path2/wb2.xlsx') #导入已有的工作簿
ws2 = wb_out.create_sheet('ads') #在已有的表格后面建立名为'ads'的表格
ws2 = wb_out.create_sheet('sa',0)  #在第一个位置建立名为'sa'的表格
#它与下面的两句效果相同
ws3 = wb_out.create_sheet(0) #在第一位新建表格
ws3.title = "sa" #将名字设为'sa'
#在ws2中A1单元格中写入'This is so cool'
ws2['A1'] = 'This is so cool'
#保存
wb_out.save("path2/wb2.xlsx")

如果已有工作簿和表格,需要接着已有的表格继续写。

  1. 在新的工作簿中新建一个表格。
out1 = Workbook()  #新建一个workbook
ws4 = out1.create_sheet(0) 
ws4.title = "university"
ws4['A1'] = 'asd'
out1.save("path2/test.xlsx") #保存为test.xlsx

上一篇下一篇

猜你喜欢

热点阅读