国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 基于win32com客戶端實現(xiàn)Excel操作

這篇具有很好參考價值的文章主要介紹了Python 基于win32com客戶端實現(xiàn)Excel操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

測試環(huán)境

Python 3.6.2

代碼實現(xiàn)

非多線程場景下使用

新建并保存EXCEL

import win32com.client
from win32api import RGB

def save_something_to_excel(result_file_path):
    excel_app = win32com.client.Dispatch('Excel.Application')
    excel_app.Visible = False  # 設(shè)置進程界面是否可見 False表示后臺運行
    excel_app.DisplayAlerts = False # 設(shè)置是否顯示警告和消息框
    book = excel_app.Workbooks.Add() # 添加Excel工作簿
    sheet = excel_app.Worksheets(1)  # 獲取第一個Sheet

    sheet.name = '匯總統(tǒng)計' # 設(shè)置Sheet名稱
    sheet.Columns.ColumnWidth = 10  # 設(shè)置所有列列寬
    sheet.Columns(1).ColumnWidth = 20 # 設(shè)置第1列列寬

    sheet.Rows.RowHeight = 15 # 設(shè)置所有行高
    sheet.Rows(1).RowHeight = 20  # 設(shè)置第一行行高

    usedRange = sheet.UsedRange  # 獲取sheet的已使用范圍
    rows = usedRange.Rows.Count  # 獲取已使用范圍的最大行數(shù),初始值為 1
    cols = usedRange.Columns.Count  # 獲取已使用范圍的最大列數(shù),初始值為 1
    print(rows, cols) # 輸出 1 1

    usedRange.Rows.RowHeight = 30 # 設(shè)置已使用范圍內(nèi)的行高
    usedRange.Columns.ColumnWidth = 30 # 設(shè)置已使用范圍內(nèi)的列寬

    # do something ...
    row_index = 1
    for index, item in enumerate(['日期', '請求方法', 'URL', '調(diào)用次數(shù)']):
        # 單元格賦值 sheet.Cells(row_index, col_index).Value = 目標(biāo)值 row_index, col_index 起始值為1
        sheet.Cells(row_index, index + 1).Value = item
    row_index += 1

    # do something else ...

    usedRange = sheet.UsedRange
    rows = usedRange.Rows.Count
    cols = usedRange.Columns.Count
    print(rows, cols) # 輸出 1 4

    sheet.Cells(1, 2).Font.Size = 29  # 設(shè)置單元格字體大小
    sheet.Cells(1, 2).Font.Bold = True  # 字體是否加粗 True 表示加粗,F(xiàn)alse 表示不加粗
    sheet.Cells(2, 2).Font.Name = "微軟雅黑" # 設(shè)置字體名稱
    # sheet.Cells(2, 2).Font.Color = RGB(0, 0, 255) # 設(shè)置字體顏色 # 不起作用

    sheet2 = excel_app.Worksheets.Add()  # 添加Sheet頁
    sheet2.Activate # 設(shè)置默認(rèn)選中的sheet為sheet2

    sheet3 = excel_app.Worksheets.Add()
    #注意,Move操作,會將被移動的表單(本例中的sheet)設(shè)置為默認(rèn)選中狀態(tài),也就是說覆蓋 sheet.Activate所做的變更

    sheet.Move(sheet3, None)  # 將sheet移動到sheet3之前

    book.SaveAs(result_file_path) # 注意:結(jié)果文件路徑必須是絕對路徑
    book.Close() # 關(guān)閉工作簿
    excel_app.Quit() # 退出

if __name__ == '__main__':
    save_something_to_excel('D:\\codePojects\\logStatistics\\result\\result.xlsx')

了解更多API,可以查看參考連接

讀取現(xiàn)有EXCEL

import win32com.client

def read_something_from_excel(excel_file_path):
    excel_app = win32com.client.Dispatch('Excel.Application')
    excel_app.Visible = False
    excel_app.DisplayAlerts = False
    book = excel_app.Workbooks.Open(result_file_path, False, True, None, None) # 打開工作簿
    
    # do something ...
    sheet = excel_app.Worksheets(1)
    print(sheet.name)
    print(sheet.Cells(1, 1).Value)

    book.SaveAs(result_file_path) # 注意:結(jié)果文件路徑必須是絕對路徑
    book.Close() # 關(guān)閉工作簿
    excel_app.Quit() # 退出

if __name__ == '__main__':
    read_something_from_excel('D:\\codePojects\\logStatistics\\result\\result.xlsx')

多線程場景下使用

import threading
import win32com.client
import pythoncom

def save_something_to_excel(result_file_path):
    pythoncom.CoInitialize()
    excel_app = win32com.client.DispatchEx('Excel.Application')
    # excel_app = win32com.client.Dispatch('Excel.Application')

    excel_app.Visible = False
    excel_app.DisplayAlerts = False
    book = excel_app.Workbooks.Add()
    sheet = excel_app.Worksheets(1)

    sheet.name = '匯總統(tǒng)計'
    row_index = 1
    for index, item in enumerate(['日期', '請求方法', 'URL', '調(diào)用次數(shù)']):
        sheet.Cells(row_index, index + 1).Value = item
    row_index += 1


    book.SaveAs(result_file_path)
    book.Close()
    excel_app.Quit()
    pythoncom.CoUninitialize() # 釋放資源

if __name__ == '__main__':
    for i in range(3):
        file_path = 'D:\\codePojects\\logStatistics\\result\\result%s.xlsx' % i
        thread = threading.Thread(target=save_something_to_excel,
                                  args=(file_path,))
        thread.start()

說明:

  1. 如果不添加以下代碼行:

    pythoncom.CoInitialize()
    

    會報錯,如下:

    pywintypes.com_error: (-2147221008, '尚未調(diào)用 CoInitialize。', None, None)
    
  2. 建議使用

    excel_app = win32com.client.DispatchEx('Excel.Application')
    

    替代

    # excel_app = win32com.client.Dispatch('Excel.Application')
    

    實踐發(fā)現(xiàn),多線程的情況下,使用Dispatch會出現(xiàn)報錯,原因似乎是Dispatch若發(fā)現(xiàn)進程已經(jīng)存在的話,就不會創(chuàng)建新的進程。若不創(chuàng)建新的進程,有些操作會有沖突,可能會影響到已經(jīng)打開的文件。

參考連接

https://learn.microsoft.com/zh-cn/office/vba/api/excel.font.color

https://blog.csdn.net/qq_25176745/article/details/125085819文章來源地址http://www.zghlxwxcb.cn/news/detail-428942.html

到了這里,關(guān)于Python 基于win32com客戶端實現(xiàn)Excel操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java實現(xiàn)導(dǎo)出多個excel表打包到zip文件中,供客戶端另存為窗口下載

    Java實現(xiàn)導(dǎo)出多個excel表打包到zip文件中,供客戶端另存為窗口下載

    業(yè)務(wù)需求:從數(shù)據(jù)庫查詢多個list集合信息封裝excel,每個excel都有2個sheet頁,填充不同的信息,最后將所有excel打包成zip文件,以流的形式返回給客戶端,供客戶端另存為窗口下載。 只發(fā)出一次請求 每個excel表中到數(shù)據(jù)記錄不能超過2條 excel文件或者zip包不會上傳服務(wù)器,而是

    2024年02月06日
    瀏覽(21)
  • 基于C# Socket實現(xiàn)的簡單的Redis客戶端

    基于C# Socket實現(xiàn)的簡單的Redis客戶端

    ???? Redis 是一款強大的高性能鍵值存儲數(shù)據(jù)庫,也是目前 NOSQL 中 最流行 比較流行的一款數(shù)據(jù)庫,它在廣泛的應(yīng)用場景中扮演著至關(guān)重要的角色,包括但不限于緩存、消息隊列、會話存儲等。在本文中,我們將介紹如何基于 C# Socket 來實現(xiàn)一個簡單的Redis客戶端類 RedisClien

    2024年02月05日
    瀏覽(19)
  • 基于SpringBoot+Vue+uniapp畢業(yè)論文管理系統(tǒng)(實現(xiàn)三個端,小程序客戶端、PC前臺客戶端、PC管理端)

    基于SpringBoot+Vue+uniapp畢業(yè)論文管理系統(tǒng)(實現(xiàn)三個端,小程序客戶端、PC前臺客戶端、PC管理端)

    文末獲取源碼 開發(fā)語言:Java 使用框架:spring boot 前端技術(shù):JavaScript、Vue?、css3 開發(fā)工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 數(shù)據(jù)庫:MySQL 5.7/8.0 數(shù)據(jù)庫管理工具:phpstudy/Navicat JDK版本:Java jdk8 Maven:apache-maven 3.8.1-bin 小程序框架:uniapp 小程序開發(fā)軟件:HBuilder X 小程序運行軟

    2024年02月04日
    瀏覽(26)
  • 基于ZXing.NET實現(xiàn)的二維碼生成和識別客戶端

    基于ZXing.NET實現(xiàn)的二維碼生成和識別客戶端

    ZXing.Net 的一個可移植軟件包,是一個開源的、多格式的1D/2D條形碼圖像處理庫,最初是用Java實現(xiàn)的。已經(jīng)過大量優(yōu)化和改進,它已經(jīng)被手動移植。它與.Net 2.0、.Net 3.5、.Net 4.x、.Net 5.x、.Net 6.x、.Net 7.x、Windows RT類庫和組件、UWP、.Net Standard 1.x和2.0x、.Net Core App 3.x、Silverlight 4、

    2024年02月08日
    瀏覽(25)
  • C++實現(xiàn)websocket服務(wù)端客戶端(基于boost,親測可行!)

    ?? 整篇文章基本參考了https://blog.csdn.net/jianghuan0122/article/details/123528907,文章記錄了如何在現(xiàn)有條件下實現(xiàn)該參考示例(參考示例存在報錯,并且參考示例沒有介紹環(huán)境安裝,正確源碼附于文末) ?? 自身環(huán)境:ubuntu18.04+gcc7.5.0+boost1.7,3 ??gcc或者g++一般都有,這里主要介紹

    2024年02月11日
    瀏覽(19)
  • 基于Labview的TCP通信(STM32為TCP客戶端,Labview的上位機為TCP服務(wù)器端)

    基于Labview的TCP通信(STM32為TCP客戶端,Labview的上位機為TCP服務(wù)器端)

    使用ESP-01S的WIFI模塊,將該WIFI模塊設(shè)置成TCP的客戶端,WIFI模塊需要連接熱點,和電腦連接的熱點處于同一局域網(wǎng)上(也可以使用花生殼軟件,進行網(wǎng)絡(luò)傳統(tǒng),就不需要連接同一網(wǎng)絡(luò),以實習(xí)遠(yuǎn)程TCP模式通信)。在PC端有Labview軟件的TCP通信的服務(wù)器端,在這里主要介紹的是TC

    2024年02月12日
    瀏覽(27)
  • 如何安裝“Nextcloud 客戶端”win10系統(tǒng)?

    如何安裝“Nextcloud 客戶端”win10系統(tǒng)?

    1、 下載 Nextcloud的官網(wǎng)?Download and install Nextcloud 2、安裝 3、 Nextcloud登錄

    2024年01月18日
    瀏覽(19)
  • 基于智能手機的醫(yī)院服務(wù)客戶端設(shè)計與實現(xiàn)(論文+源碼)_kaic

    基于智能手機的醫(yī)院服務(wù)客戶端設(shè)計與實現(xiàn)(論文+源碼)_kaic

    摘 ?要 近年來,隨著中國經(jīng)濟的迅猛發(fā)展,醫(yī)療技術(shù)水平也在不斷提高,但由于人口數(shù)目巨大,導(dǎo)致醫(yī)療資源人均分配不足的情況依舊十分嚴(yán)峻。預(yù)約掛號一直是制約醫(yī)療機構(gòu)服務(wù)質(zhì)量提高的主要環(huán)節(jié)之一。在傳統(tǒng)預(yù)約掛號方式下,繁瑣的預(yù)約掛號流程和醫(yī)療信息不透明給就

    2024年02月13日
    瀏覽(19)
  • 基于Spring Boot2.0 & HTTP/2 實現(xiàn)服務(wù)器、客戶端

    基于Spring Boot2.0 & HTTP/2 實現(xiàn)服務(wù)器、客戶端

    HTTP協(xié)議由于其無狀態(tài)的特性以及超高的普及率,是當(dāng)下大部分網(wǎng)站選擇使用的應(yīng)用層協(xié)議。然而,HTTP/1.x的底層傳輸方式的幾個特性,已經(jīng)對應(yīng)用的整體性能產(chǎn)生了負(fù)面影響。特別是,HTTP/1.0在每次的TCP連接上只允許發(fā)送一次請求,在HTTP/1.1中增加了請求管線,但是這僅僅解決

    2023年04月09日
    瀏覽(83)
  • 【網(wǎng)絡(luò)編程】——基于TCP協(xié)議實現(xiàn)回顯服務(wù)器及客戶端

    【網(wǎng)絡(luò)編程】——基于TCP協(xié)議實現(xiàn)回顯服務(wù)器及客戶端

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【網(wǎng)絡(luò)編程】【Java系列】 本專欄旨在分享學(xué)習(xí)網(wǎng)絡(luò)編程的一點學(xué)習(xí)心得,歡迎大家在評論區(qū)交流討論?? TCP提供的API主要有兩個類 Socket ( 既會給服務(wù)器使用也會給客

    2024年02月03日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包