代替 VBA!用 Python 輕松實現 Excel 編程
內容描述
在數據分析方面,Python實際上已經遠遠超越VBA,因為使用Pyhton提供的數據處理函數和模塊就可以實現很多功能,既快速、可靠又簡便。本書結合OpenPyXl、win32com、xlwings和pandas等Python包全面介紹使用Python實現Excel腳本開發的各種可能性,涉及的內容包括:Python語言基礎、Python文件操作、Excel對象模型、Excel圖形繪制、Excel圖表繪制、字典在Excel中的應用、正則表達式在Excel中的應用、使用Pandas包提高數據處理效率、使用Matplotlib包繪圖、Python與Excel VBA混合編程等。本書適合任何對Excel Python腳本開發感興趣的朋友閱讀,可以是有編程需求的職場辦公人員、數據分析人員、大學生、科研人員和程序員等。
目錄大綱
語言基礎篇
第1章 Python語言基礎 2
1.1 Python語言及其編程環境 2
1.1.1 Python語言及其特點 2
1.1.2 下載和安裝Python 3
1.1.3 Python語言的編程環境 4
1.2 常量和變量 7
1.2.1 常量 8
1.2.2 變量及其名稱 9
1.2.3 變量的聲明、賦值和刪除 9
1.2.4 深入變量 11
1.2.5 變量的數據類型 12
1.3 數字 12
1.3.1 整型數字 12
1.3.2 浮點型數字 13
1.3.3 複數 13
1.3.4 類型轉換 14
1.3.5 Python的整數緩存機制 15
1.4 字符串 16
1.4.1 創建字符串 16
1.4.2 索引和切片 17
1.4.3 轉義字符 17
1.4.4 字符串的格式化輸出 18
1.4.5 字符串的長度和大小寫 20
1.4.6 字符串的分割、連接和刪除 21
1.4.7 字符串的查找和替換 22
1.4.8 字符串的比較 23
1.4.9 字符串緩存機制 24
1.5 列表 25
1.5.1 創建列表 25
1.5.2 添加列表元素 28
1.5.3 索引和切片 29
1.5.4 刪除列表元素 31
1.5.5 列表的排序 32
1.5.6 操作函數 32
1.5.7 二維列表 33
1.6 元組 34
1.6.1 元組的創建和刪除 34
1.6.2 索引和切片 35
1.6.3 基本運算和操作 36
1.7 字典 37
1.7.1 字典的創建 37
1.7.2 索引 38
1.7.3 字典元素的增刪改 39
1.7.4 字典數據的格式化輸出 40
1.8 集合 41
1.8.1 集合的創建 41
1.8.2 集合元素的添加和刪除 42
1.8.3 集合的運算 42
1.9 處理日期和時間 45
1.9.1 獲取日期和時間 45
1.9.2 格式化日期和時間 46
1.10 表達式 47
1.10.1 算術運算符 47
1.10.2 關係運算符 48
1.10.3 邏輯運算符 49
1.10.4 賦值/成員/身份運算符 50
1.10.5 運算符的優先級 50
1.11 流程控制 52
1.11.1 判斷結構 52
1.11.2 循環結構――for循環 57
1.11.3 循環結構――while循環 61
1.11.4 其他結構 63
1.12 函數 65
1.12.1 內部函數 65
1.12.2 標準模塊函數 67
1.12.3 自定義函數 69
1.12.4 變量的作用範圍 75
1.12.5 匿名函數 77
1.13 模塊 77
1.13.1 內置模塊和第三方模塊 77
1.13.2 自定義模塊 78
1.14 工程 79
1.14.1 導入內置模塊和第三方模塊 79
1.14.2 導入自定義模塊 80
1.15 異常處理 81
1.15.1 常見的異常 81
1.15.2 異常捕獲――單分支的情況 82
1.15.3 異常捕獲――多分支的情況 83
1.15.4 異常捕獲――try…except…else… 84
1.15.5 異常捕獲――try. . . finally. . . 84
第2章 Python文件操作 86
2.1 使用Python的open函數操作文件 86
2.1.1 open函數 86
2.1.2 創建文本文件並寫入數據 87
2.1.3 讀取文本文件數據 89
2.1.4 向文本文件中追加數據 90
2.1.5 讀/寫二進製文件數據 91
2.1.6 使用struct模塊讀取二進製文件 92
2.2 使用OS模塊操作文件 93
2.2.1 文件操作 93
2.2.2 目錄操作 95
2.2.3 路徑操作 96
2.2.4 系統操作 97
對像模型篇
第3章 Excel對像模型:OpenPyXl包 100
3.1 OpenPyXl包概述 100
3.1.1 Excel相關Python包的比較 100
3.1.2 OpenPyXI包及其安裝 101
3.1.3 Excel對像模型 101
3.1.4 使用OpenPyXI包的一般過程 102
3.2 工作簿對象 102
3.2.1 創建、保存和關閉工作簿 102
3.2.2 打開已有的工作簿文件 103
3.3 工作表對象 104
3.3.1 創建和刪除工作表 104
3.3.2 管理工作表 105
3.3.3 引用工作表 106
3.3.4 複製、移動工作表 106
3.3.5 行/列操作 107
3.3.6 工作表對象的其他屬性和方法 113
3.4 單元格對象 114
3.4.1 單元格的引用和賦值 114
3.4.2 引用單元格區域 115
3.4.3 操作單元格區域 116
3.4.4 設置單元格樣式 117
3.4.5 插入圖片 128
3.4.6 插入公式 129
3.5 綜合應用 129
3.5.1 批量新建和刪除工作表 129
3.5.2 按列拆分工作表 131
3.5.3 將多個工作表分別保存為工作簿 133
3.5.4 將多個工作表合併為一個工作表 134
第4章 Excel對像模型:win32com和xlwings包 137
4.1 win32com和xlwings包概述 137
4.1.1 win32com包及其安裝 137
4.1.2 xlwings包及其安裝 139
4.2 Excel對象 139
4.2.1 Excel對象及其層次結構 139
4.2.2 使用win32com創建Excel對象 140
4.2.3 使用xlwings創建Excel對象 140
4.2.4 xlwings的兩種編程方式 141
4.3 單元格對象 141
4.3.1 引用單元格 142
4.3.2 引用整行和整列 145
4.3.3 引用區域 147
4.3.4 引用所有單元格/特殊區域/區域的集合 151
4.3.5 擴展引用當前工作表中的單元格區域 154
4.3.6 引用末行或末列 156
4.3.7 引用特殊的單元格 158
4.3.8 獲取區域的行數、列數、左上角和右下角單元格的坐標、形狀、大小 159
4.3.9 插入單元格或區域 161
4.3.10 選擇和清除單元格 162
4.3.11 複製、粘貼、剪切和刪除單元格 164
4.3.12 設置單元格的名稱、批註和字體 168
4.3.13 設置單元格的對齊方式、背景色和邊框 172
4.4 工作表對象 175
4.4.1 相關對象介紹 175
4.4.2 創建和引用工作表 175
4.4.3 激活、複製、移動和刪除工作表 179
4.4.4 隱藏和顯示工作表 182
4.4.5 選擇行和列 183
4.4.6 複製、剪切行和列 185
4.4.7 插入行和列 187
4.4.8 刪除行和列 189
4.4.9 設置行高和列寬 191
4.5 工作簿對象 193
4.5.1 創建和打開工作簿 193
4.5.2 引用、激活、保存和關閉工作簿 195
4.6 Excel應用對象 197
4.6.1 Application(App)對象和Apps對象 197
4.6.2 定義位置、大小、標題、可見性和狀態屬性 199
4.6.3 定義其他常用屬性 201
4.7 數據讀/寫 202
4.7.1 Excel工作表與Python列表之間的數據讀/寫 203
4.7.2 Excel工作表與Python字典之間的數據讀/寫 207
4.7.3 Excel工作表與Python DataFrame之間的數據讀/寫 208
4.8 綜合應用 208
4.8.1 批量新建和刪除工作表 208
4.8.2 按列拆分工作表 211
4.8.3 將多個工作表分別保存為工作簿 215
4.8.4 將多個工作表合併為一個工作表 217
圖形圖表篇
第5章 使用Python繪製Excel圖形 224
5.1 創建圖形 224
5.1.1 點 224
5.1.2 直線段 226
5.1.3 矩形、圓角矩形、橢圓形和圓形 226
5.1.4 多義線和多邊形 228
5.1.5 曲線 229
5.1.6 標籤 230
5.1.7 文本框 231
5.1.8 標註 231
5.1.9 自選圖形 233
5.1.10 圖表 234
5.1.11 藝術字 235
5.2 圖形屬性設置 237
5.2.1 顏色設置 237
5.2.2 線條屬性:LineFormat對象 239
5.2.3 線條屬性:顏色、線型和線寬 240
5.2.4 線條屬性:箭頭、透明度和圖案填充 241
5.2.5 線條屬性:多義線、曲線和多邊形的頂點 243
5.2.6 面的屬性:FillFormat對象、顏色和透明度 245
5.2.7 面的屬性:單色填充和漸變色填充 246
5.2.8 面的屬性:圖案填充、圖片填充和紋理填充 250
5.2.9 文本屬性 253
5.3 圖形變換 254
5.3.1 圖形平移 254
5.3.2 圖形旋轉 255
5.3.3 圖形縮放 255
5.3.4 圖形翻轉 256
5.4 其他圖形操作 257
5.4.1 遍歷工作表中的圖形 257
5.4.2 固定圖形在工作表中的位置 260
5.4.3 動畫 260
5.5 圖片操作 261
5.5.1 創建圖片 261
5.5.2 圖片的幾何變換 262
第6章 使用Python繪製Excel圖表 263
6.1 創建圖表 263
6.1.1 使用xlwings包創建圖表 263
6.1.2 使用API方式創建圖表 265
6.1.3 使用Shapes對象創建圖表 266
6.1.4 綁定數據 269
6.2 圖表及其序列設置 270
6.2.1 設置圖表類型 270
6.2.2 Chart對象的常用屬性和方法 271
6.2.3 設置序列 272
6.2.4 設置序列中單個點的屬性 274
6.3 基本圖形元素的屬性設置 276
6.3.1 設置顏色 276
6.3.2 設置線形圖形元素的屬性 277
6.3.3 設置區域的透明度和顏色填充 277
6.3.4 設置區域的圖案/圖片/紋理填充 279
6.4 坐標系設置 280
6.4.1 設置Axes對象和Axis對象 280
6.4.2 設置坐標軸標題 281
6.4.3 設置數值軸取值範圍 282
6.4.4 設置刻度線 283
6.4.5 設置刻度標籤 283
6.4.6 設置網格線 285
6.4.7 設置多軸圖 286
6.4.8 設置對數坐標圖 287
6.4.9 設置其他屬性 288
6.5 圖表元素設置 290
6.5.1 SetElement方法 290
6.5.2 設置圖表區域/繪圖區 292
6.5.3 設置圖例 293
6.6 輸出圖表 294
6.6.1 將圖表複製到剪貼板 295
6.6.2 將圖表保存為圖片 296
數據處理篇
第7章 使用Python字典處理Excel數據 298
7.1 數據提取 298
7.1.1 提取首次數據 298
7.1.2 提取末次數據 300
7.2 數據去重 302
7.2.1 使用列表去重 302
7.2.2 使用集合去重 304
7.2.3 使用字典去重 305
7.2.4 使用字典對象的fromkeys方法去重 306
7.2.5 多表去重 308
7.2.6 跨表去重 309
7.3 數據查詢 312
7.3.1 個案查詢 312
7.3.2 多條件查詢 313
7.4 數據匯總 314
7.4.1 出現次數匯總 315
7.4.2 數據求和匯總 316
7.4.3 多條件匯總 318
7.5 數據排序 319
第8章 使用Python正則表達式處理Excel數據 322
8.1 正則表達式概述 322
8.1.1 什麼是正則表達式 322
8.1.2 正則表達式示例 323
8.2 在Python中使用正則表達式 325
8.2.1 re模塊 325
8.2.2 M
atch對象 330
8.2.3 Pattern對象 332
8.3 正則表達式的編寫規則 334
8.3.1 元字符 334
8.3.2 重複 338
8.3.3 字符類 343
8.3.4 分支條件 344
8.3.5 捕獲分組和非捕獲分組 345
8.3.6 零寬斷言 349
8.3.7 負向零寬斷言 351
8.3.8 貪婪匹配與懶惰匹配 353
第9章 更快、更簡潔:使用pandas包處理數據 354
9.1 NumPy和pandas包概述 354
9.1.1 NumPy和pandas包簡介 354
9.1.2 NumPy和pandas包的安裝 355
9.2 NumPy和pandas包提供的數據類型 355
9.2.1 NumPy數組 355
9.2.2 pandas Series 359
9.2.3 pandas DataFrame 363
9.3 數據輸入和輸出 370
9.3.1 Excel數據的讀/寫 370
9.3.2 CSV數據的讀/寫 373
9.3.3 將DataFrame數據保存到新的工作表中 374
9.3.4 在同一個工作表中讀/寫多個DataFrame數據 375
9.4 數據整理 377
9.4.1 添加行或列 377
9.4.2 插入行或列 378
9.4.3 更改數據 380
9.4.4 刪除行或列 381
9.4.5 添加前綴或後綴 382
9.4.6 數據去重 383
9.4.7 數據篩選 383
9.4.8 數據轉置 385
9.4.9 合併數據 385
9.4.10 連接數據 393
9.4.11 拼接數據 395
9.4.12 追加數據 397
第10章 擴展Excel的數據可視化功能:Matplotlib包 398
10.1 Matplotlib包概述 398
10.1.1 Matplotlib包簡介 398
10.1.2 安裝Matplotlib包 399
10.2 使用Matplotlib包繪圖 399
10.2.1 點圖 399
10.2.2 線形圖 401
10.2.3 條形圖 404
10.2.4 面積圖 406
10.2.5 餅圖 407
10.3 導出用Matplotlib包繪製的圖形 408
10.3.1 保存用Matplotlib包繪製的圖形 408
10.3.2 將用Matplotlib包繪製的圖形添加到Excel工作表中 409
擴展編程篇
第11章 Python與Excel VBA混合編程 412
11.1 在Python中調用VBA代碼 412
11.1.1 Excel VBA編程環境 412
11.1.2 編寫Excel VBA程序 414
11.1.3 在Python中調用VBA函數 414
11.2 在 VBA中調用Python代碼 415
11.2.1 xlwings加載項 415
11.2.2 編寫Python文件 417
11.2.3 在VBA中調用Python函數 418
11.2.4 xlwings加載項使用避坑指南 419
11.3 自定義函數(UDF) 420
11.3.1 使用VBA自定義函數 420
11.3.2 在VBA中調用Python自定義函數的準備工作 421
11.3.3 在VBA中調用Python自定義函數 421
11.3.4 常見錯誤 422
作者介紹
童大謙具有15年以上VB、VBA、.NET開發經驗,開發了多個數學、數據分析與可視化方面的軟件,以及與科研院所合作開發了若干個軟件系統。對Python、MATLAB、SPSS、R等數據分析軟件非常熟悉,出版多本相關圖書。曾在高校執教,CSDN高#級講師,全網學員目前近20萬人。