Python Excel文件操作

一、写入 Excel 文件

import xlwt

def set_style(name,height,bold=False):
	""" 设置表格样式 """
	style 			= xlwt.XFStyle()
	font 			= xlwt.Font()
	font.name 		= name
	font.bold 		= bold
	font.color_index 	= 4
	font.height 		= height
	style.font 		= font
	return style

def write_excel(file_name):
	""" 写入 Excel """
	f 	= xlwt.Workbook()
	sheet1 	= f.add_sheet('学生',cell_overwrite_ok=True)
	row0	= ['姓名','年龄','出生日期','爱好'] # 第一行的内容
	colum0	= ['黄帝','岐伯','雷公'] # 第一列的内容
	# 写第一行
	for i in range(len(row0)):
		sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))
	# 写第一列
	for i in range(len(colum0)):
		sheet1.write(i+1,0,colum0[i],set_style('Times New Roman',220,True))

	# 写第 2-3行,第 2-3列
	rc2 = [[100,'公元前'],[120,'公元前']]
	for i in range(len(rc2)):
		for j in range(len(rc2[i])):
			sheet1.write(i+1,j+1,rc2[i][j],set_style('Times New Roman',220,True))

	sheet1.write(1,3,'2018/01/01')
	sheet1.write_merge(3,3,1,3,'未知') # 合并行单元格
	sheet1.write_merge(1,2,3,3,'中医') # 合并列单元格
	
	# 保存
	f.save(file_name)

if __name__ == '__main__':
	file_name = '中医.xls'
	write_excel(file_name)

执行结果:


二、读取 Excel 文件

import xlrd


def read_excel(file_name):
    """ 读取 Excel """
    newwb 	= xlrd.open_workbook(file_name,formatting_info=True)  # 带格式导入
    table 	= newwb.sheets()[0]  # 第一张表
    rows 	= table.nrows # 行数
    cols 	= table.ncols # 列数
    for i in range(rows):
    	for j in table.row_values(i):
    	    print(j,end='\t')
    	print()

if __name__ == '__main__':
	file_name = '中医.xls'
	read_excel(file_name)

执行结果:



三,复制并修改Excel文件,保持原文件样式

import xlrd
import xlutils.copy

def setOutCell(outSheet, col, row, value):
    """ Change cell value without changing formatting. """
    def _getOutCell(outSheet, colIndex, rowIndex):
    	""" HACK: Extract the internal xlwt cell representation. """
    	row = outSheet._Worksheet__rows.get(rowIndex)
    	if not row: return None
 
    	cell = row._Row__cells.get(colIndex)
    	return cell
 
	# HACK to retain cell style.
    previousCell = _getOutCell(outSheet, col, row)
    # END HACK, PART I
 
    outSheet.write(row, col, value)
 
    # HACK, PART II
    if previousCell:
        newCell = _getOutCell(outSheet, col, row)
        if newCell:
            newCell.xf_idx = previousCell.xf_idx

def update_excel(file_name):
    zs1, zs2 = "修改1","修改2"
    newwb = xlrd.open_workbook(file_name,formatting_info=True)  # 带格式导入
    outwb = xlutils.copy.copy(newwb)  # 建立一个副本来写
    outSheet = outwb.get_sheet(0)
    #setOutCell(outSheet, 5, 5, 'Test')
    #outwb.save('output.xls')

    table = newwb.sheets()[0]  # 第一张表
    age = table.row_values(1)[1] # 获取第2行第1列的值
    age=int(age)+2 # 把年龄修改为 原来的年龄 +2
    setOutCell(outSheet, 1, 1, age) # 再写入到新建的副本
    setOutCell(outSheet, 2, 1, "公元前2599年") # 修改出生日期


    files = 'updata.xls'
    outwb.save(files)

if __name__ == '__main__':
	file_name = '中医.xls'
	update_excel(file_name)

执行结果:


猜你喜欢

转载自blog.csdn.net/a649344475/article/details/80880171