溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下如何使用openpyxl處理表格數(shù)據(jù)

發(fā)布時間:2022-01-26 11:25:54 來源:億速云 閱讀:402 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Linux下如何使用openpyxl處理表格數(shù)據(jù),希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

openpyxl模塊是一個讀寫Excel 2010文檔的Python庫,如果要處理更早格式的Excel文檔,需要用到額外的庫,openpyxl是一個比較綜合的工具,能夠同時讀取和修改Excel文檔。其他很多的與Excel相關(guān)的項目基本只支持讀或者寫Excel一種功能。

Linux下如何使用openpyxl處理表格數(shù)據(jù)

在Centos8中安裝方式如下:

[root@localhost ~]# yum -y install python3-openpyxl

從Excel表格中讀取數(shù)據(jù)

如果要讀取 Excel 文件,必須使用 load_workbook() 方法打開電子表格。之后可以使用 active 來選擇第一個可用的工作表,并通過傳遞 row 和 column 參數(shù)使用 cell() 屬性來選擇單元格。value 屬性返回特定單元格的值。請參閱下面的示例以獲得更好的理解。

注意:第一行或第一列整數(shù)是 1,而不是 0。

下面的數(shù)據(jù)可以保存在excel表格文件中,用來做下面的實驗,文件名稱為wb.xlsx

NameCourseBranchSemester
AnkitB.TechCSE4
RahulM.TechCSE2
PriyaMBAHR3
NikhilB.TechCSE4
NishaB.TechBiotech5
[root@localhost data]# python3# 導(dǎo)入openpyxl庫>>> import openpyxl# path變量指定表格文件的位置>>> path = "/data/wb.xlsx"# 加載表格文件>>> wb_obj = openpyxl.load_workbook(path)# 激活默認(rèn)的工作表>>> sheet_obj = wb_obj.active# 選擇第一行第一列的單元格,也就是A1單元格>>> cell_obj = sheet_obj.cell(row = 1, column = 1)# 打印單元格所屬位置>>> print(cell_obj)'Sheet1'.A1># 打印A1單元格的值>>> print(cell_obj.value)
Name
Linux下如何使用openpyxl處理表格數(shù)據(jù)

從多個單元格讀取數(shù)據(jù)

從多個單元格中讀取數(shù)據(jù)的方式有兩種。

**方法一:**我們可以分別使用 max_rowmax_column 獲得總行數(shù)和總列數(shù)。我們可以在 for 循環(huán)中使用這些值來根據(jù)情況獲取所需行或列或任何單元格的值。讓我們看看如何獲取第一列和第一行的值。

# 使用max_row獲取工作表有多少行的數(shù)據(jù)>>> row = sheet_obj.max_row# 使用max_column獲取工作表有多少列的數(shù)據(jù)>>> column = sheet_obj.max_column# 打印行數(shù)>>> print("Total Rows: ", row)
Total Rows:  6# 打印列數(shù)>>> print("Total Cols: ", column)
Total Cols:  4# 使用for循環(huán)打印第一列數(shù)據(jù)>>> for i in range(1, row + 1):
...   cell_obj = sheet_obj.cell(row = i, column = 1)
...   print(cell_obj.value)
...
Name
Ankit
Rahul
Priya
Nikhil
Nisha# 使用for循環(huán)打印第二條數(shù)據(jù):>>> for i in range(1, column + 1):
...   cell_obj = sheet_obj.cell(row = 3, column = i)
...   print(cell_obj.value, end = " ")
...
Rahul M.Tech CSE 2

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù) **方法二:**我們還可以使用單元格名稱從多個單元格中讀取。這可以看作是Python的列表切片。

# 選中A1到B6的單元格>>> cell_obj = sheet_obj['A1':'B6']
>>># for玄幻打印兩列的數(shù)據(jù)>>> for cell1, cell2 in cell_obj:
...   print(cell1.value, cell2.value)
...
Name Course
Ankit B.Tech
Rahul M.Tech
Priya MBA
Nikhil B.Tech
Nisha B.Tech
Linux下如何使用openpyxl處理表格數(shù)據(jù)

寫入表格數(shù)據(jù)

首先,讓我們創(chuàng)建一個新的表格,然后我們將一些數(shù)據(jù)寫入新創(chuàng)建的文件??梢允褂?Workbook() 方法創(chuàng)建一個空的表格。讓我們看看下面的例子。

[root@localhost data]# python3# 導(dǎo)入openpyxl庫里面的Workbook>>> from openpyxl import Workbook
>>># 創(chuàng)建空的工作簿>>> workbook = Workbook()
>>># 保存文件>>> workbook.save(filename="/data/sample.xlsx")
>>>

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù) 創(chuàng)建一個空文件后,讓我們看看如何使用 Python 向其中添加一些數(shù)據(jù)。要首先添加數(shù)據(jù),我們需要選擇活動工作表,然后使用 cell() 方法,我們可以通過傳遞行號和列號作為其參數(shù)來選擇任何特定的單元格。我們也可以使用單元格名稱進行書寫。

# 獲取激活的工作表>>> sheet = workbook.active
>>># 為A1添加Hello值>>> c1 = sheet.cell(row = 1, column = 1, value = 'Hello')# 為B1添加World值>>> C2 = sheet.cell(row = 1, column = 2, value = 'World')
>>># 為A2添加Welcome值>>> C3  = sheet['A2'].value = 'Welcome'# 為B2添加Everyone值>>> C4 = sheet['B2'].value = 'Everyone'>>># 保存到文件>>> workbook.save("/data/sample.xlsx")

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

附加數(shù)據(jù)到表格

在上面的示例中,您將看到每次嘗試寫入表格時,現(xiàn)有數(shù)據(jù)都會被覆蓋,并且該文件將另存為新文件。發(fā)生這種情況是因為 Workbook() 方法總是創(chuàng)建一個新的工作簿文件對象。要寫入現(xiàn)有工作簿,必須使用 load_workbook() 方法打開文件。

[root@localhost data]# python3>>> import openpyxl
>>># 使用load_workbook加載文件>>> wb = openpyxl.load_workbook("/data/sample.xlsx")
>>>
>>> sheet = wb.active
>>>
>>> c = sheet['A3']
>>>
>>> c.value = 'New Data'>>>
>>> wb.save("/data/sample.xlsx")

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù) 我們還可以使用 append() 方法在工作表的末尾附加多個數(shù)據(jù)。

# 定義數(shù)據(jù)>>> data = (
... (1,2,3),
... (4,5,6)
... )
>>># 使用for循環(huán)將內(nèi)容附加到工作表中>>> for row in data:
...   sheet.append(row)
...
>>> wb.save('/data/sample.xlsx')

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

Excel表格的算術(shù)運算

可以通過在電子表格的特定單元格中鍵入公式來執(zhí)行算術(shù)運算。例如,如果我們想求和,則使用 Excel 文件的 =Sum() 公式。

[root@localhost data]# python3>>> import openpyxl
>>># 創(chuàng)建新工作簿>>> wb = openpyxl.Workbook()
>>>
>>> sheet = wb.active
>>># 在單元格中寫入數(shù)據(jù)>>> sheet['A1'] = 200
>>> sheet['A2'] = 300
>>> sheet['A3'] = 400
>>> sheet['A4'] = 500
>>> sheet['A5'] = 619# 在A7單元格求和>>> sheet['A7'] = '=SUM(A1:A5)'>>># 保存文件名稱為sum.xlsx>>> wb.save('/data/sum.xlsx')

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

調(diào)整單元格的行和列

工作表對象具有控制行高和列寬的 row_dimensionscolumn_dimensions 屬性。工作表的 row_dimensionscolumn_dimensions 是類似字典的值;row_dimensions 包含 RowDimension 對象, column_dimensions 包含 ColumnDimension 對象。在 row_dimensions 中,可以使用行號(在本例中為 1 或 2)訪問其中一個對象。在 column_dimensions 中,可以使用列的字母(在本例中為 A 或 B)訪問其中一個對象。

[root@localhost data]# python3# 導(dǎo)入模塊>>> import openpyxl
>>># 創(chuàng)建新工作簿>>> wb = openpyxl.Workbook()
>>>
>>> sheet = wb.active
>>># 向A1單元格寫入數(shù)據(jù)>>> sheet.cell(row = 1, column = 1, value = ' Hello ')'Sheet'.A1># 向B2單元格寫入數(shù)據(jù)>>> sheet['B2'].value = ' Everyone '>>># 設(shè)置第一行單元格高度為45>>> sheet.row_dimensions[1].height = 45
>>># 設(shè)置B列單元格寬度為70>>> sheet.column_dimensions['B'].width = 70
>>>
>>> wb.save('/data/h_and_w.xlsx')

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

合并單元格

可以使用 merge_cells() 方法將多個單元格合并為單個單元格。

[root@localhost data]# python3>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active# 合并A2到D4單元格,并添加數(shù)據(jù)>>> sheet.merge_cells('A2:D4')
>>> sheet['A2'].value = 'Twelve cells join together.'>>># 合并C6到D6單元格,并添加數(shù)據(jù)>>> sheet.merge_cells('C6:D6')
>>> sheet['C6'].value = 'Two merge cells.'>>>
>>> wb.save('/data/merge_cells.xlsx')

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

取消合并單元格

如要取消合并單元格,請用 unmerge_cells() 方法。

# 取消合并A2到D4單元格>>> sheet.unmerge_cells('A2:D4')
>>># 取消合并C6到D6單元格>>> sheet.unmerge_cells('C6:D6')
>>>
>>> wb.save('/data/merge_cells.xlsx')

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

設(shè)置字體樣式

要自定義單元格中的字體樣式,重點是從 openpyxl.styles 模塊導(dǎo)入 Font() 函數(shù)。

[root@localhost data]# python3>>> import openpyxl# 從openpyxl.styles導(dǎo)入Font函數(shù)>>> from openpyxl.styles import Font
>>>
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>># 為A1單元格添加內(nèi)容,并設(shè)置字體大小為24>>> sheet['A1'].value = 'Linuxprobe.com'>>> sheet['A1'].font = Font(size = 24)# B2單元格添加內(nèi)容,設(shè)置字體大小24,斜體>>> sheet.cell(row = 2, column = 2, value = "Linuxprobe.com").font = Font(size = 24, italic = True)# C3單元格添加內(nèi)容,設(shè)置字體大小24,粗體>>> sheet.cell(row = 3, column = 3, value ="Linuxprobe.com").font = Font(size = 24, bold = True)# D4單元格添加內(nèi)容,設(shè)置字體大小24,設(shè)置字體樣式>>> sheet.cell(row = 4, column = 4, value = "Linuxprobe.com").font = Font(size = 24, name = 'Times New Roman')
>>> wb.save('/data/font_styles.xlsx')

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

繪制圖表

要在 Excel 表格上繪制圖表,首先要創(chuàng)建特定圖表類(即 BarChart、LineChart 等)的圖表對象。創(chuàng)建圖表對象后,在其中插入數(shù)據(jù),最后將該圖表對象添加到工作表中。

[root@localhost data]# python3>>> import openpyxl# 導(dǎo)入圖表庫>>> from openpyxl.chart import BarChart, Reference
>>>
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>># 使用循環(huán)為工作表附加內(nèi)容>>> for i in range(10):
...   sheet.append([i])
...# 為圖表創(chuàng)建數(shù)據(jù)>>> values = Reference(sheet, min_col=1,min_row=1,max_col=1,max_row=10)#創(chuàng)建圖表實例>>> chart = BarChart()# 向條形圖添加數(shù)據(jù)>>> chart.add_data(values)# 添加圖表標(biāo)題>>> chart.title = " BAR-CHART "# 添加X坐標(biāo)標(biāo)題>>> chart.x_axis.title = " X_AXIS "# 添加Y坐標(biāo)標(biāo)題>>> chart.y_axis.title = " Y_AXIS ">>># 工作表的E2單元格添加圖表>>> sheet.add_chart(chart, 'E2')
>>>
>>> wb.save("/data/charts.xlsx")

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù) 下面實例,是添加折線圖:

[root@localhost data]# python3>>> import openpyxl# 導(dǎo)入圖表庫>>> from openpyxl.chart import LineChart, Reference
>>>
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>># 使用循環(huán)為工作表附加內(nèi)容>>> for i in range(10):
...   sheet.append([i])
...# 為圖表創(chuàng)建數(shù)據(jù)>>> values = Reference(sheet, min_col=1,min_row=1,max_col=1,max_row=10)#創(chuàng)建圖表實例>>> chart = LineChart()# 向折現(xiàn)圖添加數(shù)據(jù)>>> chart.add_data(values)# 添加圖表標(biāo)題>>> chart.title = " LINE-CHART "# 添加X坐標(biāo)標(biāo)題>>> chart.x_axis.title = " X_AXIS "# 添加Y坐標(biāo)標(biāo)題>>> chart.y_axis.title = " Y_AXIS ">>># 工作表的E2單元格添加圖表>>> sheet.add_chart(chart, 'E2')
>>>
>>> wb.save("/data/charts.xlsx")

Linux下如何使用openpyxl處理表格數(shù)據(jù)Linux下如何使用openpyxl處理表格數(shù)據(jù)

添加圖片

為了在我們的工作表中導(dǎo)入圖像,我們將使用 openpyxl.drawing.image.Image。該方法是在pillow庫中找到的 PIL.Image 方法。因此,必須安裝 python3-pillow庫才能使用此方法。

[root@localhost data]# yum -y install python3-pillow[root@localhost data]# python3>>> import openpyxl# 導(dǎo)入Image函數(shù)>>> from openpyxl.drawing.image import Image
>>>
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>># 向工作表第一行添加內(nèi)容>>> sheet.append(["abc",10,"def",20])# 添加圖片>>> img = Image("/data/banner1.jpg")
>>>
>>> sheet.add_image(img, 'A2')
>>>
>>> wb.save("/data/images.xlsx")
Linux下如何使用openpyxl處理表格數(shù)據(jù)

看完了這篇文章,相信你對“Linux下如何使用openpyxl處理表格數(shù)據(jù)”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI