python上传excel⽂件_python读写Excelpython实现Excel上传最近⼩编在处理各种.xlsx表格的数据处理和计算的⼯作,⽬前python⽤于操作表格的模块有很多,功能各有千秋。本⽂主要讲的是xlwt⽤于写,xlrt⽤于读。
表格写⼊
简单的写⼊功能可⽤xlwt模块,写⼊功能的难点在于写⼊合并的单元格。单元格的下标都是从0开始。
安装:
pip install xlwt
新建workbook:
wk=xlwt.Workbook()
新建sheet:
sheet1 = wk.add_sheet("数据", cell_overwrite_ok=True)
写⼊普通单元格:写⼊第3⾏,第2列
sheet1.write(2 , 1, "liebao")
# 参数⼀:⾏下标
# 参数⼆:列下标
# 参数三:写⼊的内容
写⼊合并的单元格:
# 列合并:写⼊第2⾏,第2~5列
sheet1.write_merge(1, 1, 1, 4, "列合并")
# ⾏合并:写⼊第1~3⾏,第3列
sheet1.write_merge(0, 2, 2, 2, "⾏合并")
# 参数⼀:开始的⾏下标
# 参数⼆:结束的⾏下标(包含)
# 参数三:开始的列下标
# 参数四:结束的列下标(包含)
# 参数五:写⼊的内容
保存⾄表格⽂件
wk.save(file_name)
# 参数⼀:保存的表格⽂件名或者流
但是我们的单元格怎么设置样式呢?⼀般的单元格都会调整样式,如合并居中、设置字体⼤⼩、背景⾊等等?
如何写⼊公式?
如实现下⾯的
{
def xlwt_excel():
'''
表格写⼊
:return:
'''
# 获得可写⼊的workbook对象
wk = xlwt.Workbook()
# 增加⼀个sheet 并且单元格可重写
sheet1 = wk.add_sheet(sheet_name, cell_overwrite_ok=True) # 合并的⾏:写⼊合并的第⼀、⼆⾏
for i in range(0, len(row0_2)):
sheet1.write_merge(0, 1, i, i, row0_2[i], get_style())
# 写⼊单个最后⼀列的第⼀、⼆⾏:分开的两⾏消耗(元) 折前
sheet1.write(0, len(row0_2), simple_end_col[0], get_style()) sheet1.write(1, len(row0_2), simple_end_col[1], get_style())
# 合并的⾏:写第⼀列
sheet1.write_merge(2, len(liebao_accounts) +
1, 0, 0, colum0[0], get_style())
sheet1.write_merge(2 + len(liebao_accounts),
len(liebao_accounts) + len(wifi_accounts) + 1, 0, 0, colum0[1], get_style())
# 写⼊单个单元格:写猎豹数据:
for index in range(0, len(liebao_accounts)):
sheet1.write(2 + index, 1, liebao_accounts[index]
['app'], get_style(True))
sheet1.write(2 + index, 2, liebao_accounts[index]
['system'], get_style(True))
sheet1.write(2 + index, 3, liebao_accounts[index]
['account'], get_style(True))
sheet1.write(2 + index, 4, float(liebao_accounts
[index]['spend']), get_style(True))
# 写⼊单个单元格:写⼊wifi数据
for index in range(0, len(wifi_accounts)):
sheet1.write(2 + len(liebao_accounts) +
index, 1, wifi_accounts[index]['app'], get_style(True))
sheet1.write(2 + len(liebao_accounts) +
index, 2, wifi_accounts[index]['system'], get_style(True))
python怎么读入excel
sheet1.write(2 + len(liebao_accounts) +
index, 3, wifi_accounts[index]['account'], get_style(True))
sheet1.write(2 + len(liebao_accounts) +
index, 4, float(wifi_accounts[index]['spend']), get_style(True))
# 写⼊数字格式化
sheet1.write_merge(2 + len(liebao_accounts) +
len(wifi_accounts), 2 + len(liebao_accounts) + len(wifi_accounts), 0, 1, w(), get_style(num_format=True))
# 写⼊合并列:合计
sheet1.write_merge(2 + len(liebao_accounts)
+ len(wifi_accounts), 2 + len(liebao_accounts) + len(wifi_accounts), 2, 3, "合计", get_style())
# 写⼊公式:求和消耗总和
sheet1.write(2 + len(liebao_accounts) +
len(wifi_accounts), 4,
xlwt.Formula("SUM(E3:E%d)" % (3 + len(liebao_accounts)
+ len(wifi_accounts) - 1)), get_style())
# 写⼊超链接
sheet1.write_merge(3 + len(liebao_accounts) +
len(wifi_accounts), 3 + len(liebao_accounts) +
len(wifi_accounts), 0,
4, xlwt.Formula('HYPERLINK("sunflowercoder/";
"更多好⽂ 点击查看我的博客")'),
get_style(bold=True))
# 修改列宽度
for i in range(0, len(row0_2) + 1):
# 保存到⽂件
wk.save(file_name)
def get_style(simple_ceil=False, num_format=False, bold=False):
'''
设置表格样式
:param simple_ceil: 是否为 普通单元格,默认为⾮普通单元格:param num_format: 是否为需要格式化的数字单元格
:param bold: 是否需要加粗
:return:
'''
style = xlwt.XFStyle()
if not simple_ceil:
# 字体
font = xlwt.Font()
font.name = "宋体"
font.bold = bold
font.underline = False
font.italic = False
font.height = 200 # 200为10号字体
style.font = font
# 单元格居中
align = xlwt.Alignment()
align.horz = xlwt.Alignment.HORZ_CENTER # ⽔平⽅向align.vert = xlwt.Alignment.VERT_CENTER # 竖直⽅向style.alignment = align
# 背景⾊
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour =
lour_map['pale_blue']
# 设置单元格背景⾊为黄⾊
style.pattern = pattern
# 边框
border = xlwt.Borders() # 给单元格加框线
border.left = xlwt.Borders.THIN # 左

border.right = xlwt.Borders.THIN # 右
border.bottom = xlwt.Borders.THIN # 下
border.left_colour = 0x40 # 边框线颜⾊
border.right_colour = 0x40
border.bottom_colour = 0x40
style.borders = border
# 数字格式化
if num_format:
style.num_format_str = 'M/D/YY'
# 选项: D-MMM-YY, D-MMM-YY,
D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss,
M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
return style
表格读取
读取⽐较⿇烦的是合并单元格的内容,Python读取Excel中单元格的内容返回的有5种类型,ctype分别为 : 0 empty,1 string,2 number, 3 date,4 boolean,5 error
安装:pip install xlrd
读取⽰例:
def xlrd_excel():
'''
表格读取
:return:
'''
# 打开⽂件
wb = xlrd.open_workbook(filename=file_name,
formatting_info=True)
# 获取所有表格名字
print("所有的表格名:", wb.sheet_names())
# 通过索引获取表格
sheet1 = wb.sheet_by_index(0)
# 通过名字获取表格
# sheet2 = wb.sheet_by_name(sheet_name)
# 输出表格的名字,⾏数和列数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。