python——xlsx文件的读写操作详解

本文对xlsx文件的读写使用以下的库,已安装的可以忽略:

"""
需安装的库文件:
pip install xlrd==1.2.0
pip install pywin32

换源网址:
- 豆瓣:http://pypi.douban.com/simple/
- 中科大:https://pypi.mirrors.ustc.edu.cn/simple/
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple

换源安装,例如:pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple
"""

xlsx文件的读操作:

1.读一行数据

# 读一行
# 参数解读:get_row(excel的路径,选择的子表格名字,所读行的位置)
def get_row(file_path, subtable, row_location):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(subtable)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    # 获取选取对象的行列值
    rowNum = sheet.nrows
    colNum = sheet.ncols
    # 获取某一行的数据
    row_allvalue = sheet.row_values(row_location)
    # 返回的结果为列表,例如:[1,2,3,4]
    return row_allvalue

2.读多行数据

# 读多行数据
# 参数解读:get_rows(excel的路径,选择的子表格名字,所读行开始的位置,所读行结束的位置)
def get_rows(file_path, subtable, start, end):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(subtable)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    # 获取多行数据
    value_library = []
    for row_location in range(int(start), int(end)+1):
        row_allvalue = sheet.row_values(row_location)
        value_library.append(row_allvalue)
    return value_library

3.读全部数据

# 读全部数据
# 参数解读:get_all(excel的路径,选择的子表格名字)
def get_all(file_path, subtable):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(subtable)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    # 获取选取对象的行数
    rowNum = sheet.nrows
    value_library = []
    for row_location in range(rowNum):
        row_allvalue = sheet.row_values(row_location)
        value_library.append(row_allvalue)
    return value_library

4.读一列数据

# 读一列
# 参数解读:get_col(excel的路径,选择的子表格名字,读列的位置)
def get_col(file_path, sheet_name, local):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(sheet_name)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    cols = sheet.col_values(local)
    return cols

5.读多列数据

# 读多列
# 参数解读:get_cols(excel的路径,选择的子表格名字,读列开始的位置,读列结束的位置)
def get_cols(file_path, sheet_name, start, end):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(sheet_name)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    final_result = []
    for i in range(start, end+1):
        cols = sheet.col_values(i)
        final_result.append(cols)
    return final_result

xlsx文件的写操作:

1.写一行数据

# 写一行
# 参数解读:write_data(excel的路径,选择的子表格名字,所在的行位置,写的内容(以列表的形式写入))
def write_data(file_path, subtable, row, value):
    xlapp_1 = client.Dispatch("Excel.Application")
    xlapp_1.Visible = False
    filename = xlapp_1.Workbooks.Open(file_path)
    sheet = filename.Worksheets(subtable)
    num = 1
    for i in value:
        sheet.Cells(row, num).value = i
        num += 1
    filename.Save()
    filename.Close(True)

2.写多行数据

# 写多行数据
# 参数解读:write_datas(excel的路径,选择的子表格名字,所在行开始的位置,写的内容(以列表的形式写入))
def write_datas(file_path, subtable, start, value):
    xlapp_1 = client.Dispatch("Excel.Application")
    xlapp_1.Visible = False
    filename = xlapp_1.Workbooks.Open(file_path)
    sheet = filename.Worksheets(subtable)
    for j in value:
        num = 1
        for i in j:
            sheet.Cells(start, num).value = i
            num += 1
        start += 1
    filename.Save()
    filename.Close(True)

以下举一个例子进行说明,新建一个111.xlsx文件,子表格命名为:身份信息,文件信息如下:
在这里插入图片描述
对111.xlsx文件进行读操作,命令如下:

if __name__ == '__main__':
    # 读一行
    print(get_row(r"F:\flask\111.xlsx", "身份信息", 1))
    # 结果为:['张三', '男', 175.0, 20.0]

    # 读多行
    print(get_rows(r"F:\flask\111.xlsx", "身份信息", 1, 3))
    # 结果为:[['张三', '男', 175.0, 20.0], ['李四', '女', 165.0, 23.0], ['王五', '男', 180.0, 33.0]]

    # 读全部数据
    print(get_all(r"F:\flask\111.xlsx", "身份信息"))
    # 结果为:[['名字:', '性别:', '身高:', '年龄'], ['张三', '男', 175.0, 20.0], ['李四', '女', 165.0, 23.0], ['王五', '男', 180.0, 33.0], ['赵六', '女', 170.0, 18.0]]

    # 读一列
    print(get_col(r"F:\flask\111.xlsx", "身份信息", 1))
    # 结果为:['性别:', '男', '女', '男', '女']

    # 读多列
    print(get_cols("111.xlsx", "身份信息", 1, 3))
    # 结果为:[['性别:', '男', '女', '男', '女'], ['身高:', 175.0, 165.0, 180.0, 170.0], ['年龄', 20.0, 23.0, 33.0, 18.0]]

xlsx的文件进行写操作先新建222.xlsx文件, 引用文件要使用文件的全路径,子表格命名为:新建信息,命令如下:

    # 写一行,这里要新建一个222.xlsx文件, 引用文件要使用文件的全路径,子表格命名为:新建信息
    value = ['张三', '男', 175.0, 20.0]
    write_data(r"F:\flask\222.xlsx", "新建信息", 1, value)

    # 写多行,这里继续使用222.xlsx文件, 引用文件要使用文件的全路径,子表格命名为:新建信息
    value = [['张三', '男', 175.0, 20.0], ['李四', '女', 165.0, 23.0], ['王五', '男', 180.0, 33.0]]
    write_datas(r"F:\flask\222.xlsx", "新建信息", 3, value)

效果如下:
在这里插入图片描述
完整代码如下:

"""
需安装的库文件:
pip install xlrd==1.2.0
pip install pywin32

换源网址:
- 豆瓣:http://pypi.douban.com/simple/
- 中科大:https://pypi.mirrors.ustc.edu.cn/simple/
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple

换源安装,例如:pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple
"""
import xlrd
from win32com import client

# 读一行
# 参数解读:get_row(excel的路径,选择的子表格名字,所读行的位置)
def get_row(file_path, subtable, row_location):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(subtable)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    # 获取选取对象的行列值
    rowNum = sheet.nrows
    colNum = sheet.ncols
    # 获取某一行的数据
    row_allvalue = sheet.row_values(row_location)
    # 返回的结果为列表,例如:[1,2,3,4]
    return row_allvalue

# 读多行数据
# 参数解读:get_rows(excel的路径,选择的子表格名字,所读行开始的位置,所读行结束的位置)
def get_rows(file_path, subtable, start, end):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(subtable)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    # 获取多行数据
    value_library = []
    for row_location in range(int(start), int(end)+1):
        row_allvalue = sheet.row_values(row_location)
        value_library.append(row_allvalue)
    return value_library

# 读全部数据
# 参数解读:get_all(excel的路径,选择的子表格名字)
def get_all(file_path, subtable):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(subtable)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    # 获取选取对象的行数
    rowNum = sheet.nrows
    value_library = []
    for row_location in range(rowNum):
        row_allvalue = sheet.row_values(row_location)
        value_library.append(row_allvalue)
    return value_library

# 读一列
# 参数解读:get_col(excel的路径,选择的子表格名字,读列的位置)
def get_col(file_path, sheet_name, local):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(sheet_name)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    cols = sheet.col_values(local)
    return cols

# 读多列
# 参数解读:get_cols(excel的路径,选择的子表格名字,读列开始的位置,读列结束的位置)
def get_cols(file_path, sheet_name, start, end):
    # 打开excel表格
    filename = xlrd.open_workbook(file_path)
    # 打印excel所有子表格的名字
    form_name = filename.sheet_names()
    # 获取选择子表格的位置
    subtable_location = form_name.index(sheet_name)
    # 选择子表格为操作对象
    sheet = filename.sheet_by_index(subtable_location)
    final_result = []
    for i in range(start, end+1):
        cols = sheet.col_values(i)
        final_result.append(cols)
    return final_result

# 写一行
# 参数解读:write_data(excel的路径,选择的子表格名字,所在的行位置,写的内容(以列表的形式写入))
def write_data(file_path, subtable, row, value):
    xlapp_1 = client.Dispatch("Excel.Application")
    xlapp_1.Visible = False
    filename = xlapp_1.Workbooks.Open(file_path)
    sheet = filename.Worksheets(subtable)
    num = 1
    for i in value:
        sheet.Cells(row, num).value = i
        num += 1
    filename.Save()
    filename.Close(True)

# 写多行数据
# 参数解读:write_datas(excel的路径,选择的子表格名字,所在行开始的位置,写的内容(以列表的形式写入))
def write_datas(file_path, subtable, start, value):
    xlapp_1 = client.Dispatch("Excel.Application")
    xlapp_1.Visible = False
    filename = xlapp_1.Workbooks.Open(file_path)
    sheet = filename.Worksheets(subtable)
    for j in value:
        num = 1
        for i in j:
            sheet.Cells(start, num).value = i
            num += 1
        start += 1
    filename.Save()
    filename.Close(True)


if __name__ == '__main__':
    # 读一行
    print(get_row(r"F:\flask\111.xlsx", "身份信息", 1))
    # 结果为:['张三', '男', 175.0, 20.0]

    # 读多行
    print(get_rows(r"F:\flask\111.xlsx", "身份信息", 1, 3))
    # 结果为:[['张三', '男', 175.0, 20.0], ['李四', '女', 165.0, 23.0], ['王五', '男', 180.0, 33.0]]

    # 读全部数据
    print(get_all(r"F:\flask\111.xlsx", "身份信息"))
    # 结果为:[['名字:', '性别:', '身高:', '年龄'], ['张三', '男', 175.0, 20.0], ['李四', '女', 165.0, 23.0], ['王五', '男', 180.0, 33.0], ['赵六', '女', 170.0, 18.0]]

    # 读一列
    print(get_col(r"F:\flask\111.xlsx", "身份信息", 1))
    # 结果为:['性别:', '男', '女', '男', '女']

    # 读多列
    print(get_cols("111.xlsx", "身份信息", 1, 3))
    # 结果为:[['性别:', '男', '女', '男', '女'], ['身高:', 175.0, 165.0, 180.0, 170.0], ['年龄', 20.0, 23.0, 33.0, 18.0]]

    # 写一行,这里要新建一个222.xlsx文件, 引用文件要使用文件的全路径,子表格命名为:新建信息
    value = ['张三', '男', 175.0, 20.0]
    write_data(r"F:\flask\222.xlsx", "新建信息", 1, value)

    # 写多行,这里继续使用222.xlsx文件, 引用文件要使用文件的全路径,子表格命名为:新建信息
    value = [['张三', '男', 175.0, 20.0], ['李四', '女', 165.0, 23.0], ['王五', '男', 180.0, 33.0]]
    write_datas(r"F:\flask\222.xlsx", "新建信息", 3, value)

以上就是python对xlsx文件的读写的详细操作,各位读者有疑问的可以私信博主或评论留下足迹。

### 回答1: 要读取 xlsx 文件,可以使用 Python 中的 openpyxl 库。以下是一个简单的例子: ```python import openpyxl # 打开 Excel 文件 wb = openpyxl.load_workbook('example.xlsx') # 选择要操作的表单 sheet = wb['Sheet1'] # 读取单元格的值 cell_value = sheet['A1'].value # 遍历行 for row in sheet.rows: for cell in row: print(cell.value) ``` 在这个例子中,我们打开了名为 `example.xlsx` 的 Excel 文件,并选择了其中的 `Sheet1` 表单。然后我们读取了一个单元格的值,并遍历了整个表单的所有单元格。 ### 回答2: Python可以使用openpyxl库来读取xlsx文件。首先,需要安装openpyxl库,可以使用pip install openpyxl命令来安装。然后,可以使用如下代码来读取xlsx文件: ```python from openpyxl import load_workbook # 打开xlsx文件 workbook = load_workbook(filename='example.xlsx') # 获取第一个工作表 sheet = workbook.active # 遍历工作表中的每一行 for row in sheet.iter_rows(): # 遍历行中的每一列 for cell in row: # 打印每个单元格的值 print(cell.value) # 关闭工作表 workbook.close() ``` 以上代码首先使用`load_workbook`函数打开xlsx文件,可以使用`filename`参数指定文件路径。然后,使用`active`属性获取文件中的第一个工作表,也可以使用`get_sheet_by_name`函数来根据工作表的名称获取指定的工作表。接下来,可以使用`iter_rows`函数遍历工作表中的每一行,再使用内层循环遍历行中的每一列。通过`value`属性可以获取每个单元格的值。 最后,记得使用`close`方法关闭工作表,释放资源。 通过以上代码,可以读取xlsx文件中的数据,并进行相应的操作。 ### 回答3: Python读取xlsx文件可以使用第三方库openpyxl。首先,需要安装openpyxl库,可以通过命令`pip install openpyxl`进行安装。 然后,可以使用openpyxl库中的load_workbook函数来加载xlsx文件。load_workbook函数接受文件路径作为参数,返回一个Workbook对象,表示整个工作簿。例如,可以使用如下代码加载一个名为“example.xlsx”的文件: ``` from openpyxl import load_workbook # 加载xlsx文件 wb = load_workbook('example.xlsx') ``` 接下来,可以通过Workbook对象获取工作簿中的表格。可以使用wb.sheetnames属性获取所有表格名称,并通过wb[sheetname]来获取指定表格。例如,可以使用如下代码获取名为“Sheet1”的表格: ``` # 获取表格 sheet = wb['Sheet1'] ``` 获取表格后,可以通过遍历行和列的方式来获取单元格的数据。例如,可以使用如下代码遍历Sheet1表格中的所有数据: ``` # 遍历数据 for row in sheet.iter_rows(): for cell in row: print(cell.value) ``` 最后,记得使用Workbook对象的close方法来关闭文件: ``` # 关闭文件 wb.close() ``` 通过以上步骤,就可以使用Python读取xlsx文件了。读取到的数据可以根据需求进行处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值