python處理word和excel文件

来源:https://www.cnblogs.com/thresh/archive/2020/05/17/12906852.html
-Advertisement-
Play Games

python處理word和excel表格數據 學習過程中遇到批量將excel表格數據填入到word的問題,對於excel的函數使用不是很熟悉,python中有處理word和excel的庫,所以學習使用python實現對數據的批量處理。首先是需要瞭解處理word和excel的具體操作。 python對 ...


python處理word和excel表格數據

學習過程中遇到批量將excel表格數據填入到word的問題,對於excel的函數使用不是很熟悉,python中有處理word和excel的庫,所以學習使用python實現對數據的批量處理。首先是需要瞭解處理word和excel的具體操作。

python對編輯word表格

需要安裝第三方庫python-docx

python-docx API網址:https://python-docx.readthedocs.io/en/latest/#api-documentation

對錶格的基本操作

# -*- coding: utf-8 -*-
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import Pt

path=r'C:\Users\hxy\Desktop\test.docx'#文件路徑
doc=Document(path)#讀入文件
#設置表格字體
doc.styles['Normal'].font.name = u'仿宋'
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋')

#獲取所有的表格,返回列表
tables=doc.tables
print(tables)

#讀取第一個表格的內容,獲取全部的表格內容加個迴圈即可
table_1=tables[0]#第一個表
tb_rows=table_1.rows#獲取表格的行
#讀取每一行內容s
for i in range(len(tb_rows)):
    row_data=[]
    row_cells=tb_rows[i].cells
    #讀取每一行單元格內容
    for cell in row_cells:
        #單元格內容
        row_data.append(cell.text)
    print(row_data)
#數據填入表格,兩種方式
table_1.cell(0,1).text="測試使用"#單元格直接賦值
table_1.cell(0,3).paragraphs[0].add_run(u'whoami')#追加寫入數據
#單元格的屬性修改
run=table_1.cell(0,5).paragraphs[0].add_run("電腦")
run.bold=True#字體加粗
run.font.size = Pt(9)  # 字體大小:小五-9
table_1.cell(0,5).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER  # 居中

doc.save(path)#文件保存

python對excel表格的讀寫操作

python實現對excel表格的操作有xlrd(只能讀入,不能寫)、xlwd,openpyxl模塊能夠實現對excel的讀寫操作。

xlrd和xlwt都是針對Excel97-2003操作的,也就是以xls結尾的文件。很顯然現在基本上都是Excel2007以上的版本,以xlsx為尾碼。要對這種類型的Excel文件進行操作要使用openpyxl,該模塊既可以進行“讀”操作,也可以進行“寫”操作,還可以對已經存在的文件做修改。

xlrd網址:https://pypi.org/project/xlrd/

xlrd模塊讀取excel表格

# -*- coding: utf-8 -*-

import xlrd
excelDir=r'C:\Users\hxy\Desktop\test.xlsx'
# 打開表格
workbook=xlrd.open_workbook(excelDir)
# 獲取表名
worksheet_name=workbook.sheet_names()
print(worksheet_name)
# 根據序號打開表
worksheet=workbook.sheet_by_index(0)
# 獲取表的名稱,行,列
print(worksheet.name,worksheet.nrows,worksheet.ncols)
# 獲取第一行
rows=worksheet.row_values(0)
print(rows)
# 獲取單元格的值
data_1=worksheet.cell_value(1,7)
data_2=worksheet.cell(1,0).value
data_3=worksheet.row(1)[2].value
print(data_1,data_2,data_3)
# print(worksheet.cell(1,2))

#讀取指定工作表的表格內容
for i in range(worksheet.nrows):
    row=worksheet.row_values(i)
    print(row)

openpyxl網址:https://bitbucket.org/openpyxl/openpyxl/src/default/

使用openpyxl讀取和寫入excel

import openpyxl

excelDir=r'C:\Users\hxy\Desktop\test.xlsx'
#打開工作簿對象
workbook=openpyxl.load_workbook(excelDir)
#獲取工作簿中的所有表
sheetnames=workbook.sheetnames
print(sheetnames)

#獲取工作表對象
# sheetname=workbook[sheetnames[0]]
sheetname=workbook.worksheets[0]
print(sheetname)

#獲取表的屬性
name=sheetname.title
print(name)
rows,cols=sheetname.max_row,sheetname.max_column
print(rows,cols)

#按行或列方式獲取表中的數據
for row in sheetname.rows:
    for cell in row:
        print(cell.value,end=" ")
    print()
print("=="*30)
for col in sheetname.columns:
    for cell in col:
        print(cell.value,end=" ")
    print()
#獲取指定單元個的數據
data1=sheetname.cell_value(0,0)
data2=sheetname.cell(0,1).value
print(data1,data2)


# 插入一列
sheetname.insert_cols(1)
for index,row in enumerate(sheetname.rows):
    if index==0:
        row[0].value="編號"
    else:
        row[0].value=index

#可以插入列表數據
data=[10,"llc",'whoami','hellowordl']
sheetname.append(data)
#保存
workbook.save(filename=excelDir)
print('finish')

批量操作數據

​ 因為數據格式是相同的,只是填入的數據不同,所以可以通過docx和xlrd對錶格的基本操作,可以實現對數據的批量處理。首先使用xlrd將數據讀取到列表中,然後將列表的數據填入指定的表格中。

這裡只是對word和excel的基本操作,能夠完成目前所需。另外設置單元格格式,設置數據格式等更多的操作還有待學習。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 問題 對 排序,只要在 後面加欄位就可以了,可以通過加 或`asc`來選擇降序或升序。但排序規則是預設的,數字、時間、字元串等都有自己預設的排序規則。有時候需要按自己的想法來排序,而不是按欄位預設排序規則。 比如欄位值為英文欄位: 、`Tuesday Wednesday`等,如果按欄位預設排序規 ...
  • 項目簡介 項目來源於: "https://gitee.com/zzdoreen/SSMS" 本系統基於 JSP+Servlet+Mysql 一個基於JSP+Servlet+Jdbc的學生成績管理系統。涉及技術少,易於理解,適合 JavaWeb初學者 學習使用。 難度等級:入門 技術棧 編輯器 Ecl ...
  • #! python3import random ''' 目標:製作N份選項無序的試卷 步驟:1.創建文件(試卷文件和對應答案文件) 2.寫入題頭 3.寫入題目和選項 4.關閉文件 重點:1.無序選項如何實現 已有數據是字典形式,key是題目內容,對應的value是正確答案, 選項都是value,所以 ...
  • scala基礎 安裝scala(不推薦使用最新版本,2.11.x夠用了) "scala官網" "2.11.12版本下載頁面" 這裡我選擇2.11.12版本,在下載頁面往下拉,選擇scala 2.11.12.msi(windows用戶),msi安裝比較簡單,一直點點就行。如果下載速度慢,建議用迅雷。 ...
  • 今天學習了一下集合類的知識,練習Set的時候發現 1*Set集合允許重覆的值插入,但是重覆的值會被覆蓋; 2*List集合允許重覆的值插入,但是重覆的值會不會被覆蓋; import java.util.*; public class Test14702 { public static void ma ...
  • 你在山上看風景,看風景的人在山上看你。明月裝飾了你的窗子,你裝飾了別人的夢。 裝飾器模式(Decorator Pattern),別名又叫包裝者模式(wapper),允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬於結構型模式,它是作為現有的類的一個包裝,不同於代理。 這種模 ...
  • 沒想到吧,我硬著頭皮來給你們更Python了,先上代碼 0 為了不讓你們作弊,我只截了圖,代碼多了一點,我也是手酸(無奈)╮(╯▽╰)╭ 。 我下周六更 bye~ ...
  • 本文主要介紹線程的基本概念和意義、多線程程式開發需要註意的問題、創建線程的方式、線程同步、線程通信、線程的生命周期、原子類等java併發編程基礎內容 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...