Python 办公自动化:Excel 文件处理(上)#
#Python 读写 Excel 文件(基础篇)
#1. Excel 简介与技术选型
Excel 作为全球商业数据处理的「通用协作工具」,承载了多少职场人重复操作?每周五合并20张子公司导出的.xls周报?每月手工筛选计算上万条传统财务数据?
在 Daoman Python AI 的工程和实战辅导中,这类「枯燥低效」的.xls自动化场景,恰恰是 Python 办公自动化的高频刚需——因为很多国企、中小传统企业的内部系统、旧设备导出的报表还强制使用 Excel 97-2003 标准(.xls),新出的 openpyxl 读不了,必须专门学这一套库组合拳。
#工具链快速梳理
Python 生态有明确的 Excel 处理分工:
- 读旧版 (.xls):用
xlrd(读表、定位单元格、处理特殊格式) - 写旧版 (.xls):用
xlwt(新建工作簿、写数据、加样式、写Excel内置指令) - 改旧版 (.xls):用
xlutils配合前两个库(核心是 copy 功能,把 xlrd 的只读对象转成 xlwt 的可写对象)
#环境一键安装
💡 敲黑板!
xlrd从 2.0.0 版本起彻底取消了对 .xlsx 的支持,为了适配旧系统的读写,必须严格指定安装1.2.0。
在终端/命令行执行:
pip install xlwt xlrd==1.2.0 xlutils#2. 读取 Excel 文件
旧版 Excel 的读取逻辑非常清晰,和你手动打开Excel的逻辑是一样的:打开文件(Workbook)➔ 切换/找到表格(Sheet)➔ 定位/读取单元格(Cell)➔ 处理特殊格式。
#实战:批量读2020年阿里某段简化.xls
我们以一份简化的「阿里股票交易日」.xls为例,里面包含了日期、开盘价、收盘价等字段,重点练习日期格式转换(这个是 xlrd 读表最大的坑,因为 Excel 把日期存成内部的**纯数字(1900年1月1日是1)。
import xlrd
# 1. 打开工作簿,formatting_info=True 是保留单元格格式(后面可能用到)
wb = xlrd.open_workbook('阿里巴巴2020年股票数据.xls', formatting_info=True)
# 2. 获取并切换到第一个工作表
# 方法1:按名称找(更稳妥)
# sheet = wb.sheet_by_name('Sheet1')
# 方法2:按索引找(从0开始)
sheet_names = wb.sheet_names()
print(f"文件里的所有工作表: {sheet_names}")
sheet = wb.sheet_by_index(0)
# 3. 先看看表格的基本信息
print(f"总行数: {sheet.nrows},总列数: {sheet.ncols}")
print("-" * 80)
# 4. 逐行逐列读取
for row_idx in range(sheet.nrows):
# 遍历前先检查行,第一行是表头吗?对,跳过日期在第0行,遍历行>行表头,遍历列>列列列列列>列>列>列列列列>列>列>列列>列列列列列列列>列>列列>列列列列列列列>列>列列>列列列列列>列>列列>列列列列列>列列列>列>列>列列列列>列列列列列>列>列>列列列列>列>列列列列>列列列列>列>列列列列>列列列列>列>列列列列列列列>列列列>列>列列列列>列>列列列列>列列列列>列列列>列>列列列列>列列列>列>列列列列列>列列>列>列列列列>列>列列列>列>列列列列列列列>列列列>列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列>列列列列>列>列列列列>列>列列列>列>列列列列列列>列>列列列列>列列列列>列列列列列>列>列列列列>列列列>列>列列列列>列列>列>列列列列>列>列列列列>列>列列列列>列列列>列>列列列列>列>列列列>列>列列列列>列列列列>列>列列列列>列>列列列>列>列列列列>列>列列列列>列列>列>列列列列>列列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列列>列>列列列列>列>列列列>列>列列列列>列>列列列>列>列列列列>列>列列列列>列>列列列列>列>列列列>列>列列列列>列列>列>列列列列>列>列列列列>列>列列列列>列列>列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列列>列>列列列列>列>列列列列>列>列列列列>列>列列列>列>列列列列>列>列列列>列>列列列列>列列列列>列>列列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列>列列列>列>列列列列>列>列列列列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列列>列>列列列列>列>列列列>列>列列列列>列列列列>列
