功能說明:
設置Excel的屬性:表格的寬度和高度,以及背景色(2紅色/3綠色/4藍色/5黃色)、邊框樣式(細實線:1,小粗實線:2,細虛線:3,中細虛線:4,大粗實線)、字體(微軟雅黑/宋體)、字體大小(字體大小,20為字號),字體粗細(Ture加粗/False不加粗),并將數(shù)據(jù)追加寫入excel中,應用場景:可作為簡單的測試報告模板使用
代碼:
import xlwt
import xlrd
from xlutils.copy import copy
import time,os
def write_excel_Append(file_name,value):
if os.path.exists('%s'%file_name):
pass
#print ("文件已存在")
else:
#print ("文件不存在,新建excel")
add_excel = xlwt.Workbook()
#xlwt.add_palette_colour("custom_colour", 0x21)
excel_sheet_name = 'result'
sheet = add_excel.add_sheet(excel_sheet_name)
add_excel.save(file_name)
try:
#獲取需要寫入數(shù)據(jù)的行數(shù)
index = len(value)
#print ("寫入數(shù)據(jù)的行數(shù):%s"%index)
# 獲取工作簿中的所有表格
work_book = xlrd.open_workbook(file_name,formatting_info=True) # 保留原有的格式打開工作簿
all_sheets = work_book.sheet_names()
#print (all_sheets)
# 獲取表格中已存在的數(shù)據(jù)的行數(shù)
work_sheet = work_book.sheet_by_name(all_sheets[0]) # 獲取工作簿中所有表格中的的第一個表格
rows_old = work_sheet.nrows
#print ("表格中已存在的數(shù)據(jù)的行數(shù)%s"%rows_old)
# 將xlrd對象拷貝轉化為xlwt對象
new_work_book = copy(work_book)
new_work_sheet = new_work_book.get_sheet(0) # 獲取轉化后工作簿中的第一個表格
#set_excel 方法使用:set_excel(背景色, 邊框樣式, '字體','字體大小','字體加粗')
#首行樣式
stylei_1 = set_excel(5, 1, '微軟雅黑', 220, bold=True)
#第二行樣式
stylei_2 = set_excel(27, 1, '微軟雅黑', 220, bold=True)
#其他行樣式
styleok = set_excel(1,1, '微軟雅黑', 220, bold=False)
#將讀取的數(shù)據(jù)寫入excel
for i in range(0, index):
# #設置行高
new_work_sheet.row(i+rows_old).height_mismatch = True
new_work_sheet.row(i+rows_old).height = 20 * 20 # 20為基準數(shù),40意為40磅
for j in range(0, len(value[i])):
if i == 0 :
# 追加寫入數(shù)據(jù),并設置單元格顏色
new_work_sheet.write(i+rows_old, j, value[i][j], style=stylei_1)
#設置列寬
new_work_sheet.col(j).width = 256 * 21
elif i == 1 :
new_work_sheet.write(i + rows_old, j, value[i][j], style=stylei_2)
new_work_sheet.col(j).width = 256 * 21
else:
new_work_sheet.write(i + rows_old, j, value[i][j], style=styleok)
new_work_book.save(file_name) # 保存工作簿
#print("xls格式表格【追加】寫入數(shù)據(jù)成功!")
except Exception as e:
print ('寫入數(shù)據(jù)失敗:',e)
def set_excel(col,border,font_name,font_size,bold):
# 初始化樣式
stylei = xlwt.XFStyle()
# 配置單元格顏色
patterni = xlwt.Pattern() # 為樣式創(chuàng)建圖案
patterni.pattern = 1 # 設置底紋的圖案索引,1為實心,2為50%灰色
patterni.pattern_fore_colour = col # 設置底紋的前景色
patterni.pattern_back_colour = 5 # 設置底紋的背景色
# 為樣式創(chuàng)建邊框,border為邊框線樣式1為實線
borders = xlwt.Borders()
borders.left = border
borders.right = border
borders.top = border
borders.bottom = border
# 樣式居中
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
# 字體樣式
font = xlwt.Font() # 為樣式創(chuàng)建字體
font.name = font_name
font.bold = bold
font.height = font_size
#樣式
stylei.pattern = patterni # 背景色
stylei.borders = borders # 邊框
stylei.alignment = alignment # 居中
stylei.font = font
return stylei
if __name__ == '__main__':
excel_file_name = 'test.xls'
tabal_title = [["標題"]]
tabal_content = [["內容1", "內容2", "內容3", "內容4", "內容5"],
["內容6", "內容7", "內容8", "內容9", "內容10"]]
test = tabal_title+tabal_content
write_excel_append(excel_file_name,test)
執(zhí)行:
測試結果: