asp.net添加删除表格_如何用openpyxl自动化编写Excel电子表格
有很多不同的東西你可以寫到電子表格,從簡(jiǎn)單的文本或數(shù)字值到復(fù)雜的公式,圖表,甚至圖像。
創(chuàng)建一個(gè)簡(jiǎn)單的電子表格
之前,大家看到了一個(gè)非常快速的例子,就是如何將 "Hello world!"寫進(jìn)電子表格中,所以大家可以從這個(gè)開始。
上面代碼中高亮的幾行是最重要的寫法:
第5行告訴你如何創(chuàng)建一個(gè)新的空工作簿。
第8行和第9行顯示了如何向特定單元格添加數(shù)據(jù)。
第11行告訴你如何在完成后保存電子表格。
盡管上面這些代碼表達(dá)非常簡(jiǎn)潔,但遇到更復(fù)雜情況的時(shí)候,熟知它們還是非常必要的。
你可以做的一件事是在你的Python文件或控制臺(tái)中添加下面的方法來幫助即將到來的代碼示例:
>>> def print_rows():... for row in sheet.iter_rows(values_only=True):... print(row)只需調(diào)用print_rows(),就能輕松打印出所有的電子表格值。
電子表格的基本操作
在進(jìn)入更高級(jí)的主題之前,最好先了解如何管理電子表格中最簡(jiǎn)單的元素。
添加和更新單元格值
你已經(jīng)學(xué)會(huì)了如何像這樣的電子表格添加值:
sheet["A1"] = "value"其實(shí)還有一種方法可以做到這一點(diǎn):先選擇一個(gè)單元格,然后改變其值。
>>> cell = sheet["A1"]>>> cell'Sheet'.A1>>>> cell.value'hello'>>> cell.value = "hey">>> cell.value'hey'只有在調(diào)用workbook.save()后,新的值才會(huì)存儲(chǔ)到電子表格中。
openpyxl會(huì)在添加值時(shí)創(chuàng)建一個(gè)單元格,前提是如果該單元格之前不存在。
>>> # Before, our spreadsheet has only 1 row>>> print_rows()('hello', 'world!')>>> # Try adding a value to row 10>>> sheet["B10"] = "test">>> print_rows()('hello', 'world!')(None, None)(None, None)(None, None)(None, None)(None, None)(None, None)(None, None)(None, None)(None, 'test')當(dāng)你試圖向單元格B10中添加一個(gè)值時(shí),你最終會(huì)得到一個(gè)有10行的元組,只是為了讓你能得到那個(gè)測(cè)試值。
管理行和列
在操作電子表格時(shí),最常見的事情之一就是添加或刪除行和列。openpyxl軟件包允許你通過使用以下方法以一種非常直接的方式來完成這些操作:
.insert_rows()
.delete_rows()
.insert_cols()
.delete_cols()
以下這些方法中的每一個(gè)都可以接收兩個(gè)參數(shù):
idx
數(shù)量
再用我們基本的hello_world.xlsx例子,讓我們看看這些方法是如何工作的。
>>> print_rows()('hello', 'world!')>>> # Insert a column before the existing column 1 ("A")>>> sheet.insert_cols(idx=1)>>> print_rows()(None, 'hello', 'world!')>>> # Insert 5 columns between column 2 ("B") and 3 ("C")>>> sheet.insert_cols(idx=3, amount=5)>>> print_rows()(None, 'hello', None, None, None, None, None, 'world!')>>> # Delete the created columns>>> sheet.delete_cols(idx=3, amount=5)>>> sheet.delete_cols(idx=1)>>> print_rows()('hello', 'world!')>>> # Insert a new row in the beginning>>> sheet.insert_rows(idx=1)>>> print_rows()(None, None)('hello', 'world!')>>> # Insert 3 new rows in the beginning>>> sheet.insert_rows(idx=1, amount=3)>>> print_rows()(None, None)(None, None)(None, None)(None, None)('hello', 'world!')>>> # Delete the first 4 rows>>> sheet.delete_rows(idx=1, amount=4)>>> print_rows()('hello', 'world!')你需要唯一需要記住的是,當(dāng)插入新數(shù)據(jù)(行或列)時(shí),插入發(fā)生在idx參數(shù)之前。如果你執(zhí)行insert_rows(1),它會(huì)在現(xiàn)有的第一行之前插入一條新行。
對(duì)于列來說也是一樣:當(dāng)你調(diào)用insert_cols(2)時(shí),它會(huì)在已經(jīng)存在的第二列(B)之前插入一個(gè)新的列。
但是,當(dāng)刪除行或列時(shí),.delete_...會(huì)從作為參數(shù)傳遞的索引開始刪除數(shù)據(jù)。
例如,當(dāng)執(zhí)行delete_rows(2)時(shí),它刪除第2行,而當(dāng)執(zhí)行delete_cols(3)時(shí),它刪除第三列(C)。
管理工作表格
工作表管理也是你需要了解的東西之一,盡管它可能是你不經(jīng)常使用的東西。
如果你回顧一下本教程中的代碼示例,你會(huì)注意到下面這段反復(fù)出現(xiàn)的代碼。
sheet = workbook.active這是選擇電子表格中默認(rèn)工作表的方法。不過,如果你打開的電子表格有多張表,那么你總是可以像這樣選擇一個(gè)特定的表。
>>> # Let's say you have two sheets: "Products" and "Company Sales">>> workbook.sheetnames['Products', 'Company Sales']>>> # You can select a sheet using its title>>> products_sheet = workbook["Products"]>>> sales_sheet = workbook["Company Sales"]你也可以很容易地改變一個(gè)表的標(biāo)題:
>>> workbook.sheetnames['Products', 'Company Sales']>>> products_sheet = workbook["Products"]>>> products_sheet.title = "New Products">>> workbook.sheetnames['New Products', 'Company Sales']如果你想創(chuàng)建或刪除工作表,那么你也可以通過.create_sheet()和.remove()來實(shí)現(xiàn):
>>> workbook.sheetnames['Products', 'Company Sales']>>> operations_sheet = workbook.create_sheet("Operations")>>> workbook.sheetnames['Products', 'Company Sales', 'Operations']>>> # You can also define the position to create the sheet at>>> hr_sheet = workbook.create_sheet("HR", 0)>>> workbook.sheetnames['HR', 'Products', 'Company Sales', 'Operations']>>> # To remove them, just pass the sheet as an argument to the .remove()>>> workbook.remove(operations_sheet)>>> workbook.sheetnames['HR', 'Products', 'Company Sales']>>> workbook.remove(hr_sheet)>>> workbook.sheetnames['Products', 'Company Sales']你還可以用copy_worksheet()來復(fù)制一個(gè)工作表:
>>> workbook.sheetnames['Products', 'Company Sales']>>> products_sheet = workbook["Products"]>>> workbook.copy_worksheet(products_sheet)"Products Copy">>>> workbook.sheetnames['Products', 'Company Sales', 'Products Copy']如果保存上述代碼后打開電子表格,你會(huì)發(fā)現(xiàn)工作表Products Copy與工作表Products其實(shí)是重復(fù)的。
凍結(jié)行和列
在處理大型電子表格時(shí),你可能想做的事情是凍結(jié)一些行或列,這樣當(dāng)你向右或向下滾動(dòng)時(shí),它們?nèi)匀豢梢姟?/p>
凍結(jié)數(shù)據(jù)可以讓你關(guān)注重要的行或列,無論你在電子表格中滾動(dòng)到哪里。
同樣,openpyxl 也有辦法通過使用工作表 freeze_panes 屬性來實(shí)現(xiàn)這一目的。對(duì)于這個(gè)例子,回到我們的sample.xlsx電子表格,并嘗試做以下操作:
>>> workbook = load_workbook(filename="sample.xlsx")>>> sheet = workbook.active>>> sheet.freeze_panes = "C2">>> workbook.save("sample_frozen.xlsx")如果你在你最喜歡的電子表格編輯器中打開sample_frozen.xlsx電子表格,你會(huì)注意到第1行以及A和B列都被凍結(jié)了,無論你在電子表格中的哪個(gè)位置導(dǎo)航,這部分都是可見的。
這個(gè)功能很方便,可以將標(biāo)題保持在視線范圍內(nèi),這樣你就可以隨時(shí)知道每列代表什么。下面在是編輯器中的樣子:
請(qǐng)注意,你已經(jīng)到了電子表格的最后,然而,你既能看到第1行,又能看到A和B列。
添加過濾器
你可以使用 openpyxl 為你的電子表格添加過濾器和分類。然而,當(dāng)你打開電子表格時(shí),數(shù)據(jù)不會(huì)根據(jù)這些分類和過濾器重新排列。
這似乎是一個(gè)很無用的功能,但當(dāng)你以編程方式創(chuàng)建一個(gè)電子表格,并將被別人發(fā)送和使用時(shí),至少創(chuàng)建過濾器并允許人們?cè)谥笫褂盟€是不錯(cuò)的。
下面的代碼是一個(gè)例子,說明如何在我們現(xiàn)有的sample.xlsx電子表格中添加一些過濾器。
>>> # Check the used spreadsheet space using the attribute "dimensions">>> sheet.dimensions'A1:O100'>>> sheet.auto_filter.ref = "A1:O100">>> workbook.save(filename="sample_with_filters.xlsx")現(xiàn)在,當(dāng)您在編輯器中打開電子表格時(shí),您應(yīng)該可以看到創(chuàng)建的過濾器。
如果你知道你要應(yīng)用過濾器的電子表格的哪個(gè)部分,你就不必使用 sheet.dimensions
今天介紹了以下創(chuàng)建電子表格的基本操作,下一篇我們會(huì)繼續(xù)深入了解如何添加公式,添加樣式,進(jìn)行條件格式化,添加圖片,添加漂亮的圖表,以及如何轉(zhuǎn)換Python類到Excel電子表格。
總結(jié)
以上是生活随笔為你收集整理的asp.net添加删除表格_如何用openpyxl自动化编写Excel电子表格的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乐视网退市,有多少明星亏损惨重?
- 下一篇: 毛利率高达54%!知网年收入超11亿上热