一个基础示例
完整示例
下面的代码段是本文Xlwings获取数据到Excel的完整初学示例。
def get_excel_all_data(path: str, input_sheet_name: str = "Sheet1"):
"""用于获取给定excel文件指定工作表全部数据到一个元组,请用一个元组变量进行接收
:param path: Excel文件路径
:param input_sheet_name: 工作表名
:return: 包含有整个excel数据的元组
"""
# 文件不存在报错并退出
if not Path(path).exists():
print(f"{path}文件不存在!程序退出!")
sys.exit(1)
# 不新增工作簿
app = xw.App(visible=True, add_book=False)
# 不显示Excel消息框
app.display_alerts = False
# 关闭屏幕更新,可加快宏的执行速度
app.screen_updating = False
# 工作簿打开时选择更新链接
wb = app.books.open(path, update_links=True)
# 创建一个元组
list_value = ()
# 获取sheet个数
sheet_num = len(wb.sheets)
# 在全部sheet名称范围内搜索传入sheet名字
global exist_res # 工作表是否存在判断, 该变量没有类型,不好
for i in range(0, sheet_num):
# 获取第i个sheet名字
sht_list = wb.sheets[i].name
# 匹配结果
result = re.search(input_sheet_name, sht_list)
exist_res = False
# 存在则进入该sheet
if result is not None:
# 设置活动表为找到的该表
act_sht = wb.sheets(input_sheet_name)
# act_sht.api.ShowAllData()
# 获取该sheet最后一个已用单元格所在行列
last_cell = act_sht.used_range.last_cell
row = last_cell.row
column = last_cell.column
# 写入全部数据到元组中
try:
list_value = act_sht.range((1, 1), (row, column)).value
except Exception as e:
print(
f"您的数据表中存在显示为###或横线的无效数据,这些数据无法被读取!请修正这些数据!程序将退出!数据错误提示:\n{str(e)}"
)
sys.exit(1)
exist_res = True # 表存在,设置为True
break
if exist_res == False:
print("不存在该表,请仔细核对表名!")
app.quit() # 退出Excel应用
sys.exit(1)
# 关闭工作簿
wb.close()
# 退出应用
app.quit()
return list_value