python针对Excel表格的操作

一 python与Excel表格
Excel 是 Windows 环境下流行的、强大的电子表格应用。openpyxl 模块让 Python 程序能读取和修改 Excel电子表格文件
1)excel文档的基本定义
- 工作薄(workbook)
- 工作表(sheet)
- 活动表(active sheet)
- 行(row): 1,2,3,4,5,6……..
- 列(column): A,B,C,D……..
- 单元格(cell): B1, C1
2)python对于Excel表格操作的模块有很多种,这里选用openpyxl模块
但是openpyxl模块时需要进行安装的

pip install openpyxl

利用以上命令来安装openpyxl模块

这是选作需要操作的表格
这里写图片描述
1> 打开一个excel文档

import openpyxl
# 1. 打开一个excel文档, class 'openpyxl.workbook.workbook.Workbook'实例化出来的对象
wb = openpyxl.load_workbook('Book.xlsx')
print(wb, type(wb))
# 获取当前工作薄里所有的工作表, 和正在使用的表;
print(wb.sheetnames)
print(wb.active)

这里写图片描述
输出的是一个对象
2> 选择要操作的工作表

# 2. 选择要操作的工作表, 返回工作表对象
sheet = wb['Sheet1']
# 获取工作表的名称
print(sheet.title)

这里写图片描述
3> 指定行指定列的单元格信息

# 3. 返回指定行指定列的单元格信息
print(sheet.cell(row=1, column=2).value)

cell = sheet['B1']
print(cell)
print(cell.row, cell.column, cell.value)

这里写图片描述
4> 获取工作表中行和列的最大值

# 4. 获取工作表中行和列的最大值
print(sheet.max_column)
print(sheet.max_row)
sheet.title = '学生信息'
print(sheet.title)

这里写图片描述
5> 访问单元格的所有信息

# 5. 访问单元格的所有信息
print(sheet.rows)  # 返回一个生成器, 包含文件的每一行内容, 可以通过便利访问.
# 循环遍历每一行
for row in sheet.rows:
    # 循环遍历每一个单元格
    for cell in row:
        # 获取单元格的内容
        print(cell.value, end=',')
    print()

这里写图片描述
6> 保存修改信息

# 6. 保存修改信息
wb.save(filename='Boom.xlsx')

这里写图片描述
因此操作Excel表格可详细的概括如下:
1.导入 openpyxl 模块。
2.调用 openpyxl.load_workbook()函数。
3.取得 Workbook 对象。
4.调用 wb.sheetnames和 wb.active 获取工作簿详细信息。
5.取得 Worksheet 对象。
6.使用索引或工作表的 cell()方法,带上 row 和 column 关键字参数。
7.取得 Cell 对象。
8.读取 Cell 对象的 value 属性
二 Excel简单实例
- 定义一个函数, readwb(wbname, sheetname=None)
- 如果用户指定sheetname就打开用户指定的工作表, 如果没有指定, 打开active sheet;
- 根据商品的价格进行排序(由小到大), 保存到文件中;商品名称:商品价格:商品数量
- 所有信息, 并将其保存到数据库中

import os

import openpyxl


def readwb(wbname, sheetname=None):
    # 打开工作薄
    wb = openpyxl.load_workbook(wbname)
    # 获取要操作的工作表
    if not sheetname:
        sheet = wb.active
    else:
        sheet = wb[sheetname]

    # 获取商品信息保存到列表中
    #[ ['name', price, count]
    all_info = []
    for row in sheet.rows:
        child = [cell.value for cell in row]
        all_info.append(child)
    return sorted(all_info, key=lambda item: item[1])


def save_to_excel(data, wbname, sheetname='sheet1'):
    """
    将信息保存到excel表中;
    [[' BOOK', 50, 3], ['APPLE', 100, 1], ['BANANA', 200, 0.5]]
    """
    print("写入Excel[%s]中......." %(wbname))
    # 打开excel表, 如果文件不存在, 自己实例化一个WorkBook对象
    wb = openpyxl.Workbook()
    # 修改当前工作表的名称
    sheet = wb.active
    # 修改工作表的名称
    sheet.title = sheetname

    for row, item in enumerate(data):  # 0 [' BOOK', 50, 3]
        for column, cellValue in enumerate(item): #  0 ' BOOK'
            sheet.cell(row=row+1, column=column+1, value=cellValue)

    # ** 往单元格写入内容
    # sheet.cell['B1'].value = "value"
    # sheet.cell(row=1, column=2, value="value")

    # 保存写入的信息
    wb.save(filename=wbname)
    print("写入成功!")



data = readwb(wbname='Book1.xlsx')
save_to_excel(data, wbname='Book2.xlsx', sheetname="排序商品信息")

这里写图片描述

* 三 更改表格的内容*
每一行代表一次单独的销售。列分别是销售产品的类型(A)、产品每磅的价格
(B)、销售的磅数(C),以及这次销售的总收入。TOTAL 列设置为 Excel 公式,将每磅的成本乘以销售的磅数,
并将结果取整到分。有了这个公式,如果列 B 或 C 发生变化,TOTAL 列中的单元格将自动更新.

需要更新的价格如下:
Celery 1.19
Garlic 3.07
Lemon 1.27

现在假设 Garlic、 Celery 和 Lemons 的价格输入的不正确。这让你面对一项无聊
的任务:遍历这个电子表格中的几千行,更新所有 garlic、celery 和 lemon 行中每磅
的价格。你不能简单地对价格查找替换,因为可能有其他的产品价格一样,你不希
望错误地“更正”。对于几千行数据,手工操作可能要几小时
下载文件 : produceSales.xlsx
原文件打开情况:
这里写图片描述
1> 首先需要打开电子表格文件
2> 然后查找每一行内容,检查列 A (即列表的第一个索引)的值是不是 Celery、Garlic 或 Lemon
3> 如果是,更新列 B 中的价格(即列表第二个索引)
4> 最后将该表格保存为一个新的文件

import os

import openpyxl


def readwb(wbname, sheetname=None):
    # 打开工作薄
    wb = openpyxl.load_workbook(wbname)
    # 获取要操作的工作表
    if not sheetname:
        sheet = wb.active
    else:
        sheet = wb[sheetname]

    # 获取商品信息保存到列表中
    all_info = []
    for row in sheet.rows:
        child = [cell.value for cell in row]
        all_info.append(child)
        if child[0] == 'Celery':
            child[1] = 1.19
        if child[0] == 'Garlic':
            child[1] = 3.07
        if child[0] == 'Lemon':
            child[1] = 1.27
    return all_info

def save_to_excel(data, wbname, sheetname='sheet1'):
    """
    将信息保存到excel表中;
    """
    print("写入Excel[%s]中......." % (wbname))
    # 打开excel表, 如果文件不存在, 自己实例化一个WorkBook对象
    wb = openpyxl.Workbook()
    # 修改当前工作表的名称
    sheet = wb.active
    # 修改工作表的名称
    sheet.title = sheetname

    for row, item in enumerate(data):  # 0 [' BOOK', 50, 3]
        for column, cellValue in enumerate(item):  # 0 ' BOOK'
            sheet.cell(row=row + 1, column=column + 1, value=cellValue)

    # ** 往单元格写入内容
    # sheet.cell['B1'].value = "value"
    # sheet.cell(row=1, column=2, value="value")

    # 保存写入的信息
    wb.save(filename=wbname)
    print("写入成功!")


data = readwb(wbname='/home/kiosk/Desktop/day17/produceSales.xlsx')
save_to_excel(data, wbname='new_Sales.xlsx', sheetname="商品信息")

这里写图片描述
表示写入新数据成功
这里写图片描述
这是更改后的保存的新表格

  • 10
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用Python批量合并Excel表格的方法主要可以通过Pandas库来实现,具体步骤如下: 1. 首先需要导入Pandas库和os库: ``` import pandas as pd import os ``` 2. 定义需要合并的Excel文件路径和合并后的输出路径: ``` # 需要合并的Excel文件所在的文件夹路径 folder_path = r'C:\example_folder' # 合并后的Excel文件输出路径 output_path = r'C:\merged_file.xlsx' ``` 3. 遍历文件夹中的所有Excel文件,使用Pandas的read_excel函数将每个Excel文件读入到一个Pandas DataFrame中: ``` # 创建一个空的DataFrame用于存储合并后的数据 merged_data = pd.DataFrame() # 遍历文件夹中的所有Excel文件 for file in os.listdir(folder_path): # 如果文件扩展名为.xlsx,则读取该文件到一个Pandas DataFrame中 if file.endswith('.xlsx'): file_path = os.path.join(folder_path, file) data = pd.read_excel(file_path) # 将读取的数据合并到merged_data中 merged_data = merged_data.append(data, ignore_index=True) ``` 4. 将合并后的数据写入到一个新的Excel文件中: ``` # 将合并后的数据写入到一个新的Excel文件中 merged_data.to_excel(output_path, index=False) ``` 通过以上几个步骤,就可以使用Python批量合并Excel表格了。 ### 回答2: 使用Python批量合并Excel表格的方法如下: 1. 导入所需的库和模块:首先,要使用openpyxl库来读写Excel文件,因此需要在Python环境中安装该库。可以使用以下命令来安装openpyxl:pip install openpyxl 2. 指定要合并的Excel文件路径:使用os模块来获取要合并的Excel文件的路径。可以使用os.listdir()函数来获取指定目录下的所有文件名,并使用os.path.join()函数来拼接文件路径。 3. 创建一个新的Excel文件并复制源文件的内容:使用openpyxl库来创建一个新的Excel文件,然后使用load_workbook()函数从源文件中加载工作簿对象。接下来,可以使用源文件的工作表对象的iter_rows()函数循环遍历每一行,并将每一行的数据复制到新的表格中。 4. 保存并关闭新的Excel文件:使用save()函数保存新的Excel文件,并使用close()函数关闭工作簿对象。 以下是示例代码: ```python import os from openpyxl import Workbook, load_workbook # 指定要合并的Excel文件路径 folder = '路径' # 创建一个新的Excel文件 merged_workbook = Workbook() merged_sheet = merged_workbook.active # 遍历指定目录下的所有文件名 for filename in os.listdir(folder): if filename.endswith('.xlsx'): # 仅处理xlsx文件 filepath = os.path.join(folder, filename) source_workbook = load_workbook(filepath) source_sheet = source_workbook.active # 复制源文件的内容到新的工作表中 for row in source_sheet.iter_rows(max_row=source_sheet.max_row, values_only=True): merged_sheet.append(row) # 关闭源文件 source_workbook.close() # 保存并关闭新的Excel文件 merged_workbook.save('合并后的文件.xlsx') merged_workbook.close() ``` 以上代码将会批量合并指定文件夹中的所有Excel文件,并将合并后的内容保存为一个新的Excel文件"合并后的文件.xlsx"。 ### 回答3: 使用Python批量合并Excel表格可以通过以下步骤实现: 1. 导入相关的库:首先,需要导入`pandas`和`os`库。pandas库用于处理Excel文件,os库用于处理文件路径操作。 2. 获取文件列表:使用os库中的`listdir`函数获取指定文件夹下的所有Excel文件名,并将其保存在一个列表中。 3. 创建空的DataFrame:使用pandas库中的`DataFrame`函数创建一个空的数据框用于存储合并后的数据。 4. 遍历文件列表:使用for循环遍历文件列表,并针对每个文件进行以下操作。 5. 读取Excel数据:使用pandas库中的`read_excel`函数读取每个Excel文件的数据,将其存储在一个临时的数据框中。 6. 数据合并:将临时数据框的数据合并到之前创建的空数据框中,使用`concat`函数。 7. 删除临时数据框:删除临时数据框,释放内存空间。 8. 数据保存:使用pandas库中的`to_excel`函数将合并后的数据保存为一个新的Excel文件。 下面是一段示例代码,其中假设要合并的Excel文件存放在一个名为`folder`的文件夹内,并且文件名的格式为`xxx.xlsx`: ```python import pandas as pd import os # 获取文件列表 file_list = os.listdir('folder') # 创建空的数据框 merged_data = pd.DataFrame() # 遍历文件列表 for file in file_list: # 读取Excel数据 temp_data = pd.read_excel('folder/' + file) # 数据合并 merged_data = pd.concat([merged_data, temp_data], ignore_index=True) # 数据保存 merged_data.to_excel('merged_data.xlsx', index=False) ``` 运行以上代码后,会在当前目录下生成一个名为`merged_data.xlsx`的文件,其中包含了所有Excel文件中的数据合并结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值