Python自动化办公——xlrd、xlwt读写Excel

   日期:2020-07-15     浏览:98    评论:0    
核心提示:一、xlrd、xlwt读写Excel1、读操作import xlrd# 1、打开工作本workbookxlsx = xlrd.open_workbook(r.\\7月下旬入库表.xlsx)# 2、打开需要操作的表sheettable = xlsx.sheet_by_index(0)# table = xlsx.sheet_by_name(7月下旬入库表)# 3、读取指定单元格的数据print(table.cell_value(1,1))print(table.cell(1,1

一、xlrd、xlwt读写Excel

1、读操作

import xlrd

# 1、打开工作本workbook
xlsx = xlrd.open_workbook(r'.\7月下旬入库表.xlsx')

# 2、打开需要操作的表sheet
table = xlsx.sheet_by_index(0)
# table = xlsx.sheet_by_name('7月下旬入库表')

# 3、读取指定单元格的数据
print(table.cell_value(1,1))
print(table.cell(1,1).value)
print(table.row(1)[1].value)



2、写操作

import xlwt

# 1、新建一个工作本
new_workbook = xlwt.Workbook()

# 2、为这个工作本中添加一个工作表
worksheet = new_workbook.add_sheet('new_test')

# 3、向指定单元格写入内容
worksheet.write(0,0,'test')

# 4、保存
new_workbook.save('./test.xls')



3、带文字格式的写入操作

from xlutils.copy import copy
import xlrd
import xlwt

# 1、打开需要进行操作的工作本,并将其进行复制操作
# 注意:使用读取xls文件的时候都是使用的xlrd库,但是这个库只能操作 .xls格式,对于后来的 .xlsx的版本支持不算太好
# formatting_info 该参数默认为False,这可以节省内存;当取值为True时,会读取各种格式的信息
tem_excel = xlrd.open_workbook(r'.\日统计.xls',formatting_info=True)

# 2、选择需要操作的工作表
tem_sheet = tem_excel.sheet_by_index(0)

# 3、新建一个工作本,通过复制模板工作本的方式
new_excel = copy(tem_excel)

# 4、选择新的工作本中需要操作的工作表
new_sheet = new_excel.get_sheet(0)



# 初始化样式
style = xlwt.XFStyle()

# 初始化字体
font = xlwt.Font()
font.name = '微软雅黑'
font.bold = True
font.height = 18 * 20
style.font = font

# 初始化边框,细边框
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders

# 初始化对齐方式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style.alignment = alignment



# 5、向已选择的工作表中写入数据
new_sheet.write(2,1,12,style)
new_sheet.write(3,1,18,style)
new_sheet.write(4,1,19,style)
new_sheet.write(5,1,15,style)





# 6、保存文件
new_excel.save('./填写.xls')






4、综合案例:

import xlrd
import xlwt
from xlutils.copy import copy

xlsx = xlrd.open_workbook(r'.\7月下旬入库表.xlsx')
table = xlsx.sheet_by_index(0)

all_data = []

# 循环读取每一行的中的数据
for n in range(1,table.nrows):
    company = table.cell(n,1).value # 销售商
    price = table.cell(n,3).value # 单价
    weight = table.cell(n,4).value # 入库量

    data = {'company':company,'weight':weight,'price':price}
    all_data.append(data)

# 以下内容可以用pandas的groupby轻易实现,这里用了一个笨方法
a_weight = []
a_total_price = []

b_weight = []
b_total_price = []

c_weight = []
c_total_price = []

d_weight = []
d_total_price = []


# 计算每个销售商的总入库量 和 总价
for i in all_data:
    if i['company'] == '张三粮配':
        a_weight.append(i['weight'])
        a_total_price.append(i['weight'] * i['price'])
    if i['company'] == '李四粮食':
        b_weight.append(i['weight'])
        b_total_price.append(i['weight'] * i['price'])
    if i['company'] == '王五小麦':
        c_weight.append(i['weight'])
        c_total_price.append(i['weight'] * i['price'])
    if i['company'] == '赵六麦子专营':
        d_weight.append(i['weight'])
        d_total_price.append(i['weight'] * i['price'])

tem_excel = xlrd.open_workbook(r'.\7月下旬统计表.xls',formatting_info=True)
tem_sheet = tem_excel.sheet_by_index(0)

new_excel = copy(tem_excel)
new_sheet = new_excel.get_sheet(0)

style = xlwt.XFStyle()

# 初始化字体
font = xlwt.Font()
font.name = '微软雅黑'
font.bold = True
font.height = 18 * 20
style.font = font

# 初始化边框,细边框
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders

# 初始化对齐方式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style.alignment = alignment

new_sheet.write(2,1,len(a_weight),style)
new_sheet.write(2,2,round(sum(a_weight)),style)
new_sheet.write(2,3,round(sum(a_total_price),2),style)

new_sheet.write(3,1,len(b_weight),style)
new_sheet.write(3,2,round(sum(b_weight)),style)
new_sheet.write(3,3,round(sum(b_total_price),2),style)

new_sheet.write(4,1,len(c_weight),style)
new_sheet.write(4,2,round(sum(c_weight)),style)
new_sheet.write(4,3,round(sum(c_total_price),2),style)

new_sheet.write(5,1,len(d_weight),style)
new_sheet.write(5,2,round(sum(d_weight)),style)
new_sheet.write(5,3,round(sum(d_total_price),2),style)

new_excel.save('./7月下旬统计表.xls')


 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服