'''
import sys
sys.path.append('本文件所在的目录,如 D:\Fanjc\PythonProjects')
# .py文件(模块)名称是ReadAndWriteXlsx
from ReadAndWriteXlsx import readXlsx, readXlsxTargetSheet, saveAsXlsx, getCurDir, showSheetData, showXlsxData
'''
from openpyxl import load_workbook
from openpyxl import Workbook
import os
import sys
def readXlsx(path):
'''读入xlsx'''
# 输出字典:sheet名-sheet内容
ret = {}
wb = load_workbook(path)
for sheetName in wb.sheetnames:
ret[sheetName] = xlsxSheetDataToList(wb[sheetName])
return ret
def readXlsxTargetSheet(path, sheetName):
'''读入xlsx中具体某个sheet'''
# 输出二维列表:sheet内容
wb = load_workbook(path)
return xlsxSheetDataToList(wb[sheetName])
def xlsxSheetDataToList(sheetData):
'''将sheetData内容转为二维列表'''
ret = []
# true表示直接获取值,false表示获取的是cell,需通过cell.value获取值
for row in sheetData.iter_rows(values_only=True):
rowData = []
for v in row:
rowData.append(v)
ret.append(rowData)
return ret
def saveAsXlsx(path, content):
'''创建xlsx,将内容存入'''
defaultSheetName = 'Sheet1'
# 字典:sheet名-sheet内容(二维列表)
inputData = content
if not isinstance(inputData,dict):
inputData = {defaultSheetName:inputData}
# 创建表格
wb = Workbook()
for sheetName in inputData.keys():
ws = wb.create_sheet(title=sheetName)
for row in inputData[sheetName]:
ws.append(row)
# 保存
wb.remove(wb[wb.sheetnames[0]])
os.makedirs(os.path.dirname(path),exist_ok=True)
wb.save(path)
print('保存了文件:',os.path.basename(path),'\n',path)
def getCurDir():
'''获取当前文件所在目录'''
return os.path.dirname(sys.argv[0])
def showSheetData(data):
'''二维数据'''
for row in data:
print(row)
def showXlsxData(data):
'''以字典形式存储的表数据'''
for sheetName in data.keys():
print("Sheet:",sheetName)
showSheetData(data[sheetName])
print('-')
if __name__ == "__main__":
'''测试上述方法'''
# path = os.path.join(getCurDir(),'测试.xlsx')
# 读写全表
# data = readXlsx(path)
# showXlsxData(data)
# saveAsXlsx(os.path.join(getCurDir(),'导出.xlsx'),data)
# 读单一Sheet
# data =readXlsxTargetSheet(path,'手术室')
# showSheetData(data)
# saveAsXlsx(os.path.join(getCurDir(),'导出.xlsx'),data)
Python读写Xlsx的常用方法
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式。 用...
- iter, nextiter:可迭代对象,支持for循环next:变成迭代器(实现迭代器协议),支持内存对象复用,...