這篇文章將為大家詳細(xì)講解有關(guān)Python xlrd/xlwt如何創(chuàng)建excel文件,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)建站為客戶(hù)提供專(zhuān)業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開(kāi)發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開(kāi)發(fā)、WEB系統(tǒng)開(kāi)發(fā)、微信二次開(kāi)發(fā)、手機(jī)網(wǎng)站制作設(shè)計(jì)等網(wǎng)站方面業(yè)務(wù)。一、創(chuàng)建excel代碼
備注:封裝好了(可直接調(diào)用)
""" -*- coding:utf-8 -*- @Time :2020/8/20 21:02 @Author :Jarvis @File :jar_excel_util.py @Version:1.0 """ from typing import List import xlwt class JarExcelUtil: def __init__(self, header_list: List[list]): """ :param header_list: 如下格式 例1:默認(rèn)列寬 header_list = [ ['序號(hào)'], # 表格第0列[此列表頭名稱(chēng)] ['姓名'], ['性別'], ['愛(ài)好'], ['生日'] ] 例2:自定義列寬(列寬值為int類(lèi)型 英文字符長(zhǎng)度 如:10 表示列寬為10個(gè)英文字符長(zhǎng)度) header = [ ['序號(hào)', 5], # 表格第0列[此列表頭名稱(chēng),列寬] ['姓名', 10], # 表格第1列[此列表頭名稱(chēng),列寬] ['性別', 10], ['愛(ài)好', 10], ['生日', 20] ] """ self.data = header_list self.__color_str = 'aqua 0x31\r\n\ black 0x08\r\n\ blue 0x0C\r\n\ blue_gray 0x36\r\n\ bright_green 0x0B\r\n\ brown 0x3C\r\n\ coral 0x1D\r\n\ cyan_ega 0x0F\r\n\ dark_blue 0x12\r\n\ dark_blue_ega 0x12\r\n\ dark_green 0x3A\r\n\ dark_green_ega 0x11\r\n\ dark_purple 0x1C\r\n\ dark_red 0x10\r\n\ dark_red_ega 0x10\r\n\ dark_teal 0x38\r\n\ dark_yellow 0x13\r\n\ gold 0x33\r\n\ gray_ega 0x17\r\n\ gray25 0x16\r\n\ gray40 0x37\r\n\ gray50 0x17\r\n\ gray80 0x3F\r\n\ green 0x11\r\n\ ice_blue 0x1F\r\n\ indigo 0x3E\r\n\ ivory 0x1A\r\n\ lavender 0x2E\r\n\ light_blue 0x30\r\n\ light_green 0x2A\r\n\ light_orange 0x34\r\n\ light_turquoise 0x29\r\n\ light_yellow 0x2B\r\n\ lime 0x32\r\n\ magenta_ega 0x0E\r\n\ ocean_blue 0x1E\r\n\ olive_ega 0x13\r\n\ olive_green 0x3B\r\n\ orange 0x35\r\n\ pale_blue 0x2C\r\n\ periwinkle 0x18\r\n\ pink 0x0E\r\n\ plum 0x3D\r\n\ purple_ega 0x14\r\n\ red 0x0A\r\n\ rose 0x2D\r\n\ sea_green 0x39\r\n\ silver_ega 0x16\r\n\ sky_blue 0x28\r\n\ tan 0x2F\r\n\ teal 0x15\r\n\ teal_ega 0x15\r\n\ turquoise 0x0F\r\n\ violet 0x14\r\n\ white 0x09\r\n\ yellow 0x0D' self.color_list = [] # [[]] [['aqua', '0x31'], ['black', '0x08'], ...] for color in self.__color_str.split('\r\n'): color = color.split(' ') self.color_list.append(color) def write(self, out_file, data_body: List[list], sheet_name='sheet', frozen_row: int = 1, frozen_col: int = 0): """ 寫(xiě)入數(shù)據(jù) :param out_file: 保存文件(如:test.xlsx) :param data_body: data_body[0]為表格第0行數(shù)據(jù) data_body[0][0]為表格第0行第0列單元格值 :param sheet_name: :param frozen_row: 凍結(jié)行(默認(rèn)首行) :param frozen_col: 凍結(jié)列(默認(rèn)不凍結(jié)) """ # step1 判斷數(shù)據(jù)正確性(每行列數(shù)是否與表頭相同) count = 0 for pro in data_body: if len(pro) != len(self.data): raise Exception( 'data_body數(shù)據(jù)錯(cuò)誤 第{}行(從0開(kāi)始) 需為{}個(gè)元素 當(dāng)前行{}個(gè)元素:{}'.format(count, len(self.data), len(pro), str(pro))) count += 1 # step2 寫(xiě)入數(shù)據(jù) wd = xlwt.Workbook() sheet = wd.add_sheet(sheet_name) ali_horiz = 'align: horiz center' # 水平居中 ali_vert = 'align: vert center' # 垂直居中 fore_colour = 'pattern: pattern solid,fore_colour pale_blue' # 設(shè)置單元格背景色為pale_blue色 # 表頭格式(垂直+水平居中、表頭背景色) style_header = xlwt.easyxf('{};{};{}'.format(fore_colour, ali_horiz, ali_vert)) # 表體格式(垂直居中) style_body = xlwt.easyxf('{}'.format(ali_vert)) # 表頭 for col in self.data: # 默認(rèn)列寬 if len(col) == 1: sheet.write(0, self.data.index(col), str(col[0]), style_header) # 自定義列寬 if len(col) == 2: sheet.write(0, self.data.index(col), str(col[0]), style_header) # 設(shè)置列寬 sheet.col(self.data.index(col)).width = 256 * col[1] # 256為基數(shù) * n個(gè)英文字符 # 行高(第0行) sheet.row(0).height_mismatch = True sheet.row(0).height = 20 * 20 # 20為基數(shù) * 20榜 # 表體 index = 1 for pro in data_body: sheet.row(index).height_mismatch = True sheet.row(index).height = 20 * 20 # 20為基數(shù) * 20榜 for d in self.data: value = pro[self.data.index(d)] # 若值類(lèi)型是int、float 直接寫(xiě)入 反之 轉(zhuǎn)成字符串寫(xiě)入 if type(value) == int or type(value) == float: sheet.write(index, self.data.index(d), value, style_body) else: sheet.write(index, self.data.index(d), str(value), style_body) index += 1 # 凍結(jié)(列與行) sheet.set_panes_frozen('1') sheet.set_horz_split_pos(frozen_row) # 凍結(jié)前n行 sheet.set_vert_split_pos(frozen_col) # 凍結(jié)前n列 wd.save(out_file) def color_test(self): """ 測(cè)試顏色 """ body_t = [] for color in self.color_list: print(color) body_t.append(color) wd = xlwt.Workbook() sheet = wd.add_sheet('sheet') index = 0 for b in body_t: ali = 'align: horiz center;align: vert center' # 垂直居中 水平居中 fore_colour = 'pattern: pattern solid,fore_colour {}'.format( self.color_list[index][0]) # 設(shè)置單元格背景色為pale_blue色 style_header = xlwt.easyxf( '{};{}'.format(fore_colour, ali)) sheet.write(index, 0, str(b), style_header) sheet.col(0).width = 256 * 150 # 256為基數(shù) * n個(gè)英文字符 index += 1 wd.save('顏色測(cè)試.xlsx') # 測(cè)試顏色 # if __name__ == '__main__': # header_t = [ # ['顏色'] # ] # JarExcelUtil(header_t).color_test() if __name__ == '__main__': header = [ ['序號(hào)', 5], ['姓名', 10], ['性別', 10], ['愛(ài)好', 10], ['生日', 20] ] # header = [ # ['序號(hào)'], # ['姓名'], # ['性別'], # ['愛(ài)好'], # ['生日'] # ] body = [ [1, '張三', '男', '籃球', '1994-07-23'], [2, '李四', '女', '足球', '1994-04-03'], [3, '王五', '男', '兵乓球', '1994-09-13'] ] JarExcelUtil(header_list=header).write(out_file='測(cè)試.xlsx', data_body=body)
網(wǎng)頁(yè)標(biāo)題:Pythonxlrd/xlwt如何創(chuàng)建excel文件-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://www.rwnh.cn/article22/ijjjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站內(nèi)鏈、網(wǎng)站排名、動(dòng)態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容