您的位置:首页 > 编程语言 > Python开发

python 处理Excel 常见问题- 写入Excel

2017-10-19 15:34 537 查看
情境:读取Excel自动处理时,往往会在数据后面加一个处理标识,记录以处理数据与未处理数据

以处理上述Excel为例

1. xlwt
xlwt是一个写入的Excel的包
注意:xlwt写入Excel,是一个新建的Excel上进行操作,原Excel中存在数据也同样需要写入
import xlrd
import xlwt

def read_excel(fname,sheetname):
book = xlrd.open_workbook(fname)
sheet = book.sheet_by_name(sheetname)
# 获取行数
nrows = sheet.nrows
row_list = []
# 获取各行数据
for i in range(1, nrows):
row_data = sheet.row_values(i)
row_list.append(row_data)
return row_list

def write_excel(datas,filename):
book = xlwt.Workbook()
sheet1 = book.add_sheet('Sheet1')
for x,data in enumerate(datas):
print(data)
for y,param in enumerate(data):
if y == 2:
sheet1.write(x,y,'True')
else:
sheet1.write(x,y,param)
book.save(filename)

print(read_excel('demo.xls','Sheet1'))
datas = read_excel('demo.xls','Sheet1')


Excel结果如下:



仔细的朋友可能发现了,新Excel中,各字段的标题没有了,至于原因,在“注意”中已经说明

当我们需要对以存在的Excel进行写入而不是重新创建时,需要使用xlutils进行

2.xlutils
from xlutils.copy import copy

def write_exist_excel(filename,sheetname):
#读取旧Excel中的信息
exist_excel = xlrd.open_workbook(filename)
sheet = exist_excel.sheet_by_name(sheetname)
nrows = sheet.nrows

#复制已存在的Excel
new_excel = copy(exist_excel)
new_sheet = new_excel.get_sheet(sheetname)

for i in range(1,nrows):
row_data = sheet.row_values(i)
print(row_data)
# 在新的Excel中写入
new_sheet.write(i,2,'True')
new_excel.save(filename)

write_exist_excel('demo.xls','Sheet1')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: