From 2e0ebf29620fe309ddd08fe4a7278f1d36af0d9f Mon Sep 17 00:00:00 2001 From: zhaoyafan Date: Sun, 17 Jul 2022 01:36:33 +0800 Subject: [PATCH] At July 17 A. --- Base/Class/Excel.py | 27 +++++++++++++++++++-------- Base/Class/Json.py | 20 ++++++++++++++++++++ Base/Class/Yaml.py | 26 ++++++++++++++++++++++++++ Business/Config/Email/.gitkeep | 0 Business/Result/Logs/.gitkeep | 0 Business/Result/Reports/.gitkeep | 0 main7.py | 14 ++++++++++++++ 7 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 Base/Class/Json.py create mode 100644 Base/Class/Yaml.py delete mode 100644 Business/Config/Email/.gitkeep delete mode 100644 Business/Result/Logs/.gitkeep delete mode 100644 Business/Result/Reports/.gitkeep create mode 100644 main7.py diff --git a/Base/Class/Excel.py b/Base/Class/Excel.py index 8a988f3..ca57c81 100644 --- a/Base/Class/Excel.py +++ b/Base/Class/Excel.py @@ -1,4 +1,5 @@ import os, re, openpyxl +from openpyxl.cell import MergedCell from openpyxl.utils import get_column_letter, column_index_from_string @@ -131,6 +132,7 @@ class Excel: if row < 0 or col < 0: raise Exception('行或列值必须大于等于0 | Row or column values must be at least 0.') cell_object = self.__workshet__.cell(row=row + 1, column=col + 1) + cell_object = self._parseMergedCell(cell_object) self.cellSelect(cell=cell_object) return cell_object.value @@ -141,6 +143,7 @@ class Excel: if row < 0 or col < 0: raise Exception('行或列值必须大于等于0 | Row or column values must be at least 0.') cell_object = self.__workshet__.cell(row=row + 1, column=col + 1) + cell_object = self._parseMergedCell(cell_object) self.cellSelect(cell=cell_object) cell_object.value = value self.saveAuto() @@ -259,10 +262,18 @@ class Excel: for lineList in cellList: lineResult = [] for cellObject in lineList: - lineResult.append(cellObject) + lineResult.append(self._parseMergedCell(cellObject)) result.append(lineResult) return result + def _parseMergedCell(self, cell): + if isinstance(cell, MergedCell): + for mergeArea in self.__workshet__.merged_cells.ranges: + if cell.coordinate in mergeArea: + cell = self.__workshet__.cell(row=mergeArea.min_row, column=mergeArea.min_col) + return cell + + if __name__ == '__main__': # Example. # 创建新的Excel文件 @@ -282,13 +293,13 @@ if __name__ == '__main__': print(excel.cellGetView(area='A')) print(excel.cellGetView(area='1')) print(excel.cellPutView(area='A1:Z256', value= - [ - ['1', '2', '3', '4', '5'], - ['A', 'B', 'C', 'D', 'E'], - ['A', 'B', 'C', 'D', 'E'], - ['A', 'B', 'C', 'D', 'E'] - ] - )) + [ + ['1', '2', '3', '4', '5'], + ['A', 'B', 'C', 'D', 'E'], + ['A', 'B', 'C', 'D', 'E'], + ['A', 'B', 'C', 'D', 'E'] + ] + )) print(excel.sheetRename('表一')) print(excel.sheetCreate('表二')) print(excel.sheetCreate('表三')) diff --git a/Base/Class/Json.py b/Base/Class/Json.py new file mode 100644 index 0000000..74c0703 --- /dev/null +++ b/Base/Class/Json.py @@ -0,0 +1,20 @@ +import json + + +def json_encode(data, indent=None): + return json.dumps(data, indent=indent) + + +def json_decode(data): + return json.loads(data) + + +if __name__ == '__main__': + # Example. + data_encode = {"id": 101, "name": "小明", "friends": ["小红", "小花"]} + data_decode = """ + {"id": 101, "name": "\u5c0f\u660e", "friends": ["\u5c0f\u7ea2", "\u5c0f\u82b1"]} + """ + print(json_encode(data_encode)) + print(json_encode(data_encode, indent=4)) + print(json_decode(data_decode)) diff --git a/Base/Class/Yaml.py b/Base/Class/Yaml.py new file mode 100644 index 0000000..9ed914e --- /dev/null +++ b/Base/Class/Yaml.py @@ -0,0 +1,26 @@ +import yaml + + +def yaml_encode(data, indent=None): + return yaml.dump(data, indent=indent, allow_unicode=True, sort_keys=False) + + +def yaml_decode(data): + return yaml.load(data, Loader=yaml.FullLoader) + + +if __name__ == '__main__': + # Example. + data_encode = {"id": 101, "name": "小明", "friends": ["小红", "小花"], "list": {"a": 1, "b": 5}} + data_decode = """ + id: 101 + name: 小明 + friends: + - 小红 + - 小花 + list: + a: 1 + b: 5 + """ + print(yaml_encode(data_encode)) + print(yaml_decode(data_decode)) diff --git a/Business/Config/Email/.gitkeep b/Business/Config/Email/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Business/Result/Logs/.gitkeep b/Business/Result/Logs/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Business/Result/Reports/.gitkeep b/Business/Result/Reports/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/main7.py b/main7.py new file mode 100644 index 0000000..d2666b5 --- /dev/null +++ b/main7.py @@ -0,0 +1,14 @@ +from Base.Class.Excel import * + + +if __name__ == '__main__': + # Example. + # 打开现有Excel文件 + excel = Excel().open(filename='./example.xlsx') + excel.select(2) + # print(excel.cellGetView('A1:C9')) + # print(excel.cellGetView('1:9')) + + print(excel.cellGetView('1:9')) + # excel.save() + # print(excel.cellGetView(area='F6:F11'))