Python利用xlwt/openpyxl/xlutils實(shí)現(xiàn)寫(xiě)入Excel數(shù)據(jù)
xlwt
概述
xlwt庫(kù)是一個(gè)python用于操作Excel的第三方庫(kù)。它的主要功能是用來(lái)寫(xiě)入Excel。通常會(huì)與xlrd 、 xlutils組合進(jìn)行使用。它可以用于生成新的Excel 文件,并支持多種格式設(shè)置。
注意事項(xiàng):
文件格式:xlwt僅支持.xls格式,不支持.xlsx格式。如果需要處理.xlsx 文件,可以使用openpyxl。
限制:xlwt對(duì) Excel 文件的行數(shù)和列數(shù)有一定限制(最多 65536 行和 256 列)。
格式設(shè)置:xlwt還支持單元格格式設(shè)置,如字體、顏色、邊框等,可以通過(guò)xlwt.XFStyle() 來(lái)實(shí)現(xiàn)。
安裝xlwt庫(kù)
首先確保安裝xlwt
pip install xlwt
基本使用
創(chuàng)建一個(gè)工作簿對(duì)象和一個(gè)工作表對(duì)象,然后使用sheet.write(row, col, value)
方法在指定的單元格中寫(xiě)入數(shù)據(jù),最后將工作簿保存到文件中。
import xlwt # 創(chuàng)建一個(gè)工作簿 workbook = xlwt.Workbook() # 添加一個(gè)工作表 sheet = workbook.add_sheet('Sheet1') # 寫(xiě)入數(shù)據(jù) sheet.write(0, 0, 'Hello') # 第一行第一列 sheet.write(0, 1, 'World') # 第一行第二列 sheet.write(1, 0, 123) # 第二行第一列 sheet.write(1, 1, 456) # 第二行第二列 # 保存文件 workbook.save('test.xls')
更具體使用示例如下:
import xlwt # 創(chuàng)建一個(gè)工作簿 workbook = xlwt.Workbook() # 創(chuàng)建一個(gè)工作表 sheet = workbook.add_sheet('Sheet1') # 寫(xiě)入標(biāo)題 sheet.write(0, 0, '姓名') # A1 sheet.write(0, 1, '年齡') # B1 sheet.write(0, 2, '城市') # C1 # 寫(xiě)入數(shù)據(jù) data = [ ['Alice', 30, 'New York'], ['Bob', 25, 'Los Angeles'], ['Charlie', 35, 'Chicago'] ] for row_index, row_data in enumerate(data, start=1): for col_index, value in enumerate(row_data): sheet.write(row_index, col_index, value) # 保存工作簿 workbook.save('test.xls')
設(shè)置單元格樣式
import xlwt # 創(chuàng)建一個(gè)工作簿 workbook = xlwt.Workbook() # 添加一個(gè)工作表 sheet = workbook.add_sheet('Styled Sheet') # 創(chuàng)建一個(gè)樣式 style = xlwt.XFStyle() style.font.bold = True # 設(shè)置字體為粗體 style.alignment.horz = xlwt.Alignment.HORZ_CENTER # 水平居中 # 寫(xiě)入數(shù)據(jù)并應(yīng)用樣式 sheet.write(0, 0, 'Header 1', style) # 第一行第一列 sheet.write(0, 1, 'Header 2', style) # 第一行第二列 # 寫(xiě)入普通數(shù)據(jù) sheet.write(1, 0, 'Row 1, Col 1') sheet.write(1, 1, 'Row 1, Col 2') # 保存文件 workbook.save('styled.xls')
合并單元格
import xlwt # 創(chuàng)建一個(gè)工作簿 workbook = xlwt.Workbook() # 添加一個(gè)工作表 sheet = workbook.add_sheet('Merged Cells') # 創(chuàng)建一個(gè)樣式 style = xlwt.XFStyle() style.font.bold = True # 設(shè)置字體為粗體 style.alignment.horz = xlwt.Alignment.HORZ_CENTER # 水平居中 # 合并單元格 sheet.write_merge(0, 0, 0, 1, 'Merged Header', style) # 合并第一行第一列和第二列 # 寫(xiě)入其他數(shù)據(jù) sheet.write(1, 0, 'Row 2, Col 1') sheet.write(1, 1, 'Row 2, Col 2') # 保存文件 workbook.save('merged.xls')
添加公式
import xlwt # 創(chuàng)建一個(gè)工作簿 workbook = xlwt.Workbook() # 添加一個(gè)工作表 sheet = workbook.add_sheet('Formulas') # 寫(xiě)入數(shù)據(jù) sheet.write(0, 0, 5) # A1 sheet.write(0, 1, 10) # B1 # 添加公式 sheet.write(0, 2, xlwt.Formula('A1 + B1')) # C1 = A1 + B1 # 保存文件 workbook.save('formula.xls')
openpyxl
概述
openpyxl是一個(gè)用于讀寫(xiě)Excel 文件(.xlsx 格式)的Python 庫(kù)。它功能強(qiáng)大,支持多種Excel操作,包括創(chuàng)建、修改和讀取Excel文件,尤其適用于需要處理復(fù)雜Excel文件的場(chǎng)景。
主要功能:
讀取和寫(xiě)入Excel文件:支持打開(kāi)現(xiàn)有的Excel文件并進(jìn)行修改,也可以創(chuàng)建新的Excel文件。
支持多種數(shù)據(jù)類型:可以處理字符串、數(shù)字、日期等多種數(shù)據(jù)類型。
單元格格式化:支持對(duì)單元格進(jìn)行各種格式設(shè)置,包括字體、顏色、邊框、對(duì)齊方式等。
圖表支持:可以在 Excel 中創(chuàng)建和修改圖表。
公式支持:可以在單元格中寫(xiě)入公式并計(jì)算結(jié)果。
支持圖像:可以在 Excel 文件中插入圖像。
注意事項(xiàng):
文件格式:openpyxl支持.xlsx格式,不支持.xls格式。
性能:在處理大量數(shù)據(jù)時(shí),openpyxl性能較好,但在某些情況下可能會(huì)比其他庫(kù)(如pandas)慢。
復(fù)雜功能:對(duì)于需要處理復(fù)雜 Excel 文件(如圖表、公式等)的用戶,openpyxl 提供了豐富的功能和靈活性。
安裝
要使用 openpyxl,首先需要安裝它。
pip install openpyxl
基本使用
首先導(dǎo)入openpyxl,選擇創(chuàng)建一個(gè)新的工作簿或加載一個(gè)現(xiàn)有的工作簿,通過(guò)名稱或索引選擇工作表,使用sheet.cell(row, column, value)
方法在指定的單元格中寫(xiě)入數(shù)據(jù),最后將工作簿保存到文件中
import openpyxl # 創(chuàng)建一個(gè)新的工作簿 workbook = openpyxl.Workbook() # 或者加載一個(gè)現(xiàn)有的Excel文件 # workbook = openpyxl.load_workbook('test.xlsx') # 選擇活動(dòng)工作表 sheet = workbook.active sheet.title = 'Sheet1' # 或者通過(guò)名稱選擇工作表 # sheet = workbook['Sheet1'] # 寫(xiě)入標(biāo)題 sheet['A1'] = '姓名' # 第一行第一列 sheet['B1'] = '年齡' # 第一行第二列 sheet['C1'] = '城市' # 寫(xiě)入數(shù)據(jù) data = [ ['Alice', 30, 'New York'], ['Bob', 25, 'Los Angeles'], ['Charlie', 35, 'Chicago'] ] for row_index, row_data in enumerate(data, start=2): for col_index, value in enumerate(row_data, start=1): sheet.cell(row=row_index, column=col_index, value=value) # 保存工作簿 workbook.save('test.xlsx')
設(shè)置單元格樣式
import openpyxl from openpyxl.styles import Font, Alignment # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() # 選擇活動(dòng)工作表 sheet = workbook.active sheet.title = 'Styled Sheet' # 創(chuàng)建樣式 bold_font = Font(bold=True, color='FF0000') # 粗體紅色字體 center_alignment = Alignment(horizontal='center') # 水平居中 # 寫(xiě)入數(shù)據(jù)并應(yīng)用樣式 sheet['A1'] = 'Header 1' sheet['A1'].font = bold_font sheet['A1'].alignment = center_alignment sheet['B1'] = 'Header 2' sheet['B1'].font = bold_font sheet['B1'].alignment = center_alignment # 寫(xiě)入普通數(shù)據(jù) sheet['A2'] = 'Row 2, Col 1' sheet['B2'] = 'Row 2, Col 2' # 保存文件 workbook.save('styled.xlsx')
合并單元格
import openpyxl # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() # 選擇活動(dòng)工作表 sheet = workbook.active sheet.title = 'Merged Cells' # 合并單元格 sheet.merge_cells('A1:B1') # 合并 A1 和 B1 sheet['A1'] = 'Merged Header' # 設(shè)置合并單元格的值 # 寫(xiě)入其他數(shù)據(jù) sheet['A2'] = 'Row 2, Col 1' sheet['B2'] = 'Row 2, Col 2' # 保存文件 workbook.save('merged.xlsx')
添加公式
import openpyxl # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() # 選擇活動(dòng)工作表 sheet = workbook.active sheet.title = 'Formulas' # 寫(xiě)入數(shù)據(jù) sheet['A1'] = 5 # A1 sheet['B1'] = 10 # B1 # 添加公式 sheet['C1'] = '=A1 + B1' # C1 = A1 + B1 # 保存文件 workbook.save('formula.xlsx')
設(shè)置列寬和行高
import openpyxl # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() # 選擇活動(dòng)工作表 sheet = workbook.active sheet.title = 'Adjust Size' # 設(shè)置列寬 sheet.column_dimensions['A'].width = 10 # 設(shè)置 A 列寬度為 10 sheet.column_dimensions['B'].width = 30 # 設(shè)置 B 列寬度為 30 # 設(shè)置行高 sheet.row_dimensions[1].height = 40 # 設(shè)置第一行高度為 40 # 寫(xiě)入數(shù)據(jù) sheet['A1'] = '1111111111' sheet['B1'] = '222222222222222222' # 保存文件 workbook.save('size_adjusted.xlsx')
添加圖表
使用 openpyxl 可以輕松地將圖表添加到 Excel 文件中。
import openpyxl from openpyxl.chart import BarChart, Reference # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() sheet = workbook.active sheet.title = 'Chart Example' # 寫(xiě)入數(shù)據(jù) data = [ ['Month', 'Sales'], ['January', 100], ['February', 120], ['March', 140], ] for row in data: sheet.append(row) # 創(chuàng)建圖表 chart = BarChart() chart.title = "Monthly Sales" chart.x_axis.title = "Month" chart.y_axis.title = "Sales" # 指定數(shù)據(jù)范圍 data_ref = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=4) categories_ref = Reference(sheet, min_col=1, min_row=2, max_row=4) chart.add_data(data_ref, titles_from_data=True) chart.set_categories(categories_ref) # 將圖表添加到工作表 sheet.add_chart(chart, "D2") # 保存文件 workbook.save('chart_example.xlsx')
條件格式化
可以根據(jù)單元格的值設(shè)置條件格式,以便更直觀地顯示數(shù)據(jù)。
import openpyxl from openpyxl.styles import PatternFill # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() sheet = workbook.active sheet.title = 'Conditional Formatting' # 寫(xiě)入數(shù)據(jù) data = [10, 20, 30, 40, 50] for i, value in enumerate(data, start=1): sheet[f'A{i}'] = value # 設(shè)置條件格式 fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid') for cell in sheet['A']: if cell.value > 30: cell.fill = fill # 如果值大于30,填充為紅色 # 保存文件 workbook.save('conditional_formatting.xlsx')
插入圖片
可以將圖片插入到 Excel 文件中。
需要安裝Pillow
pip install Pillow
import openpyxl from openpyxl.drawing.image import Image # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() sheet = workbook.active sheet.title = 'Image with Size' # 插入圖片 img = Image('test.png') # 替換為你的圖片路徑 # 設(shè)置圖片大小 img.width = 300 # 設(shè)置寬度為300 img.height = 200 # 設(shè)置高度為200 # 在指定單元格插入圖片 sheet.add_image(img, 'A1') # 在 A1 單元格插入圖片 # 保存文件 workbook.save('image_example.xlsx')
自動(dòng)調(diào)整列寬
可以根據(jù)內(nèi)容自動(dòng)調(diào)整列寬。
import openpyxl # 創(chuàng)建一個(gè)工作簿 workbook = openpyxl.Workbook() sheet = workbook.active sheet.title = 'Auto Fit Columns' # 寫(xiě)入數(shù)據(jù) data = ['Short', 'A bit longer', 'The longest cell in this column'] for i, value in enumerate(data, start=1): sheet[f'A{i}'] = value # 自動(dòng)調(diào)整列寬 column_length = max(len(value) for value in data) + 2 # +2 為了留白 sheet.column_dimensions['A'].width = column_length # 保存文件 workbook.save('auto_fit_columns.xlsx')
讀寫(xiě)結(jié)合使用
可以結(jié)合使用xlrd和openpyxl,實(shí)現(xiàn)從一個(gè) Excel 文件中讀取數(shù)據(jù),然后將其寫(xiě)入另一個(gè)文件。
import openpyxl import xlrd # 讀取.xls 文件 workbook = xlrd.open_workbook('test.xls') sheet = workbook.sheet_by_index(0) # 創(chuàng)建一個(gè)新的.xlsx文件 new_workbook = openpyxl.Workbook() new_sheet = new_workbook.active new_sheet.title = 'Sheet1' # 將讀取的數(shù)據(jù)寫(xiě)入新的 .xlsx 文件 for row in range(sheet.nrows): for col in range(sheet.ncols): new_sheet.cell(row=row + 1, column=col + 1, value=sheet.cell_value(row, col)) # 保存新的文件 new_workbook.save('output.xlsx')
xlutils
xlutils是一個(gè)用于處理Excel文件的Python庫(kù),主要用于與xlrd和xlwt庫(kù)配合使用。它的主要功能是提供對(duì)Excel文件的讀取和寫(xiě)入操作,特別是在需要對(duì)現(xiàn)有的Excel文件進(jìn)行修改時(shí)。
主要功能:
復(fù)制工作簿:可以將現(xiàn)有的Excel文件復(fù)制到新的工作簿中,以便進(jìn)行修改。
讀取和寫(xiě)入:結(jié)合x(chóng)lrd和xlwt,xlutils可以實(shí)現(xiàn)對(duì)Excel文件的讀取和寫(xiě)入操作。
數(shù)據(jù)處理:可以在讀取數(shù)據(jù)后對(duì)其進(jìn)行處理,然后將結(jié)果寫(xiě)回到Excel文件中。
注意事項(xiàng):
xlutils 只支持 .xls 格式的文件,不支持 .xlsx 格式。如果你需要處理 .xlsx 文件,建議使用 openpyxl。
xlutils 依賴于 xlrd 和 xlwt,因此在使用之前需要確保這兩個(gè)庫(kù)已經(jīng)安裝。
安裝
要使用xlutils,需要確保已安裝xlrd和xlwt。可以使用以下命令進(jìn)行安裝:
pip install xlrd xlwt xlutils
寫(xiě)入數(shù)據(jù)
import xlwt # 創(chuàng)建一個(gè)工作簿 workbook = xlwt.Workbook() # 添加一個(gè)工作表 sheet = workbook.add_sheet('Sheet1') # 寫(xiě)入數(shù)據(jù) sheet.write(0, 0, 'A') # 第一行第一列 sheet.write(0, 1, 'B') # 第一行第二列 sheet.write(1, 0, 123) # 第二行第一列 sheet.write(1, 1, 456) # 第二行第二列 # 保存文件 workbook.save('test.xls')
使用xlutils
# 從 xlutils.copy 導(dǎo)入 copy 函數(shù),用于復(fù)制 Excel 工作簿 from xlutils.copy import copy # 導(dǎo)入 xlrd 庫(kù),用于讀取 Excel 文件 import xlrd # 導(dǎo)入 xlwt 庫(kù),用于寫(xiě)入 Excel 文件 import xlwt # 打開(kāi)名為 'test.xls' 的 Excel 文件,并保留格式信息 tem_excel = xlrd.open_workbook('test.xls', formatting_info=True) # 選擇 Excel 文件中的第一個(gè)工作表 tem_sheet = tem_excel.sheet_by_index(0) # 復(fù)制打開(kāi)的 Excel 工作簿,以便進(jìn)行寫(xiě)入操作 new_excel = copy(tem_excel) # 獲取復(fù)制后的工作簿中的第一個(gè)工作表 new_sheet = new_excel.get_sheet(0) # 創(chuàng)建一個(gè)新的樣式對(duì)象 style = xlwt.XFStyle() # 創(chuàng)建字體對(duì)象并設(shè)置屬性 font = xlwt.Font() font.name = '微軟雅黑' # 設(shè)置字體為微軟雅黑 font.bold = True # 設(shè)置字體為粗體 font.height = 100 # 設(shè)置字體高度 style.font = font # 將字體應(yīng)用到樣式 # 創(chuàng)建邊框?qū)ο蟛⒃O(shè)置邊框樣式 borders = xlwt.Borders() borders.top = xlwt.Borders.THIN # 設(shè)置上邊框?yàn)榧?xì)線 borders.bottom = xlwt.Borders.THIN # 設(shè)置下邊框?yàn)榧?xì)線 borders.left = xlwt.Borders.THIN # 設(shè)置左邊框?yàn)榧?xì)線 borders.right = xlwt.Borders.THIN # 設(shè)置右邊框?yàn)榧?xì)線 style.borders = borders # 將邊框應(yīng)用到樣式 # 創(chuàng)建對(duì)齊對(duì)象并設(shè)置對(duì)齊方式 alignment = xlwt.Alignment() alignment.horz = xlwt.Alignment.HORZ_CENTER # 水平居中對(duì)齊 alignment.vert = xlwt.Alignment.VERT_CENTER # 垂直居中對(duì)齊 style.alignment = alignment # 將對(duì)齊方式應(yīng)用到樣式 # 在指定單元格寫(xiě)入新數(shù)據(jù),并應(yīng)用樣式 new_sheet.write(1, 0, 'New Data', style) # 在第二行第一列寫(xiě)入 'New Data' # 保存修改后的新 Excel 文件為 'output.xls' new_excel.save('output.xls')
以上就是Python利用xlwt/openpyxl/xlutils實(shí)現(xiàn)寫(xiě)入Excel數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Python寫(xiě)入Excel數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
訊飛webapi語(yǔ)音識(shí)別接口調(diào)用示例代碼(python)
這篇文章主要介紹了如何使用Python3調(diào)用訊飛WebAPI語(yǔ)音識(shí)別接口,重點(diǎn)解決了在處理語(yǔ)音識(shí)別結(jié)果時(shí)判斷是否為最后一幀的問(wèn)題,通過(guò)運(yùn)行代碼并總結(jié)經(jīng)驗(yàn),解決了常見(jiàn)的模塊和屬性錯(cuò)誤,需要的朋友可以參考下2025-03-03python 實(shí)現(xiàn)Flask中返回圖片流給前端展示
今天小編就為大家分享一篇python 實(shí)現(xiàn)Flask中返回圖片流給前端展示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01Python中的可視化設(shè)計(jì)與UI界面實(shí)現(xiàn)
本文介紹了如何使用Python創(chuàng)建用戶界面(UI),包括使用Tkinter、PyQt、Kivy等庫(kù)進(jìn)行基本窗口、動(dòng)態(tài)圖表和動(dòng)畫(huà)效果的實(shí)現(xiàn),通過(guò)示例代碼,展示了如何利用這些庫(kù)來(lái)構(gòu)建功能強(qiáng)大且美觀的界面2025-01-01python驗(yàn)證公網(wǎng)ip與內(nèi)網(wǎng)ip的實(shí)現(xiàn)示例
本文主要介紹了python驗(yàn)證公網(wǎng)ip與內(nèi)網(wǎng)ip的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Python3中正則模塊re.compile、re.match及re.search函數(shù)用法詳解
這篇文章主要介紹了Python3中正則模塊re.compile、re.match及re.search函數(shù)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了re模塊 中re.compile、re.match及re.search函數(shù)的功能、參數(shù)、具體使用技巧與注意事項(xiàng),需要的朋友可以參考下2018-06-06Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加簽驗(yàn)簽
這篇文章主要介紹了Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加簽驗(yàn)簽,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-12-12