库名 | 作用 |
---|---|
xlrd | 从 Excel 中读取数据,支持 XLS、XLSX 格式。 |
xwt | 对 Excel 进行修改操作,不支持对 XLSX 格式的修改。 |
xlutils | 在 xlrd 和 xlwt 中,对一个已存在的文件进行修改。 |
openpyxl | 主要针对 XLSX 格式的 Excel 进行读取和编辑。 |
pandas | 可对 CSV 文件进行操作,主要用于大数据分析。 |
pip install openpyxl
首先介绍 Excel 的一些基本概念,如图1所示。
图1:Excel 的一些基本概念
# 导入模块 from openpyxl import Workbook # 创建一个Workbook wb = Workbook() # 默认生成一个名为Sheet的WorkSheet
# 导入模块 from openpyxl import load_workbook # 导入一个Workbook wb = load_workbook(filename = './empty_book.xlsx')
# 获取默认打开的WorkSheet ws1 = wb.active # 创建一个WorkSheet ws2 = wb.create_sheet() # 可传title和index两个参数 # 通过名称获取WorkSheet ws3=wb['Sheet1']
# 使用WorkSheet的cell方法 c1=ws.cell('A1') c2=ws.cell(row=1,column=1) # 获取A1单元格 # 通过坐标获取Cell c3=ws['A1'] # 获取多个 c3=ws['A1:E5'] # 返回多行数据,类型为tuple
# 直接使用WorkSheet的cell方法设置 ws.cell(row=1,column=1,value=10) # 设置Cell对象的value属性 c1=ws.cell('A1') c1.value=100
from openpyxl import load_workbook,Workbook from openpyxl.worksheet.worksheet import Worksheet import os import random from datetime import datetime class ExcelManual: def _ _init_ _(self, file_path): self.file_path = file_path if os.path.exists(file_path): self.wb = load_workbook(file_path) else: self.wb = Workbook() def select_sheet(self, name): """ 选择表单 :param name: 表单名称 :return: """ if name in self.wb.sheetnames: self.live_sheet = self.wb[name] else: self.live_sheet = self.wb.create_sheet(name) return self.live_sheet def read_cell_value(self, row, column): """ 读取一个单元格的数据内容 :param row: 行 :param column: 列 :return: """ if isinstance(self.live_sheet, Worksheet): return self.live_sheet.cell(row, column).value def write_value_in_cell(self, row, column, value): """ 往单元格中写入数据 :param row:行 :param column:列 :param value:值 :return: """ self.live_sheet.cell(row, column, value) def read_row_value(self, row_num): """ 读取一行的数据功能 :return: """ if isinstance(self.live_sheet, Worksheet): max_row = self.live_sheet.max_row if row_num > max_row: print("行数超过表单中的最大行数") return max_column = self.live_sheet.max_column data_list = [] for i in range(max_column): data_list.append(self.live_sheet.cell(row_num, i + 1).value) return data_list def read_value_by_sheet(self, sheet_name): """ 获取表单中的所有数据 :param sheet_name: :return: """ current_sheet = self.wb[sheet_name] if isinstance(current_sheet, Worksheet): return list(current_sheet.values) def close(self): """操作完一定要保存并关闭才有效""" self.wb.save(self.file_path) self.wb.close() if _ _name_ _ == '_ _main_ _': myExcel = ExcelManual("./data.xlsx") myExcel.select_sheet("data") for i in range(1,3): for j in range(1,11): if i==1: myExcel.write_value_in_cell(j,i,str(random.randint(1,1000))) else: myExcel.write_value_in_cell(j, i, datetime.now().strftime("%Y-%m-%d")) myExcel.close() print(myExcel.read_value_by_sheet("data"))运行结果:
图2:查看生成的数据
本文链接:http://task.lmcjl.com/news/17383.html