python:使用openpyxl库,实现excel表格的创建、查询(读取)、修改、插入数据

在Python中,可以使用多种库来操作Excel文件,最常用的是openpyxl(处理.xlsx格式)和xlrd/xlwt(处理.xls格式)。下面介绍如何使用Python创建、读取和修改Excel文件,并结合你的需求示例。

1. 安装必要的库

bash 复制代码
pip install openpyxl  # 处理.xlsx格式

2. 创建或写入Excel文件

以下代码演示如何创建一个Excel文件并写入数据:

python 复制代码
from openpyxl import Workbook
from openpyxl import load_workbook

# 创建新的Excel文件
def create_excel(file_path):
    # 创建工作簿
    wb = Workbook()
    # 获取默认工作表
    ws = wb.active
    ws.title = "Sheet1"
    
    # 添加表头
    ws['A1'] = 'ID'
    ws['B1'] = '姓名'
    ws['C1'] = '部门'
    
    # 保存文件
    wb.save(file_path)
    print(f"已创建文件: {file_path}")

# 向现有Excel文件追加数据
def append_to_excel(file_path, data):
    try:
        # 打开现有工作簿
        wb = load_workbook(file_path)
        ws = wb.active
        
        # 获取当前最后一行的行号
        last_row = ws.max_row
        
        # 从第二行开始添加数据(第一行是表头)
        for row in data:
            ws.append(row)
        
        # 保存修改
        wb.save(file_path)
        print(f"已成功追加数据到 {file_path}")
    except FileNotFoundError:
        print(f"文件不存在: {file_path}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:创建文件并追加数据
if __name__ == "__main__":
    file_path = "D:/a.xlsx"
    
    # 创建文件(如果不存在)
    if not os.path.exists(file_path):
        create_excel(file_path)
    
    # 准备要追加的数据(每行是一个列表)
    new_data = [
        [1, "张三", "技术部"],
        [2, "李四", "市场部"]
    ]
    
    # 追加数据到Excel
    append_to_excel(file_path, new_data)

3. 读取Excel文件

以下代码演示如何读取Excel文件中的数据:

python 复制代码
from openpyxl import load_workbook

def read_excel(file_path):
    try:
        # 打开工作簿
        wb = load_workbook(file_path)
        ws = wb.active
        
        # 获取最大行数和列数
        max_row = ws.max_row
        max_col = ws.max_column
        
        # 读取数据
        data = []
        for row in range(1, max_row + 1):
            row_data = []
            for col in range(1, max_col + 1):
                cell_value = ws.cell(row=row, column=col).value
                row_data.append(cell_value)
            data.append(row_data)
        
        # 打印数据
        for row in data:
            print(row)
        
        return data
    except FileNotFoundError:
        print(f"文件不存在: {file_path}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:读取Excel文件
if __name__ == "__main__":
    file_path = "D:/a.xlsx"
    read_excel(file_path)

4. 修改现有Excel文件中的数据

以下代码演示如何修改Excel文件中的特定单元格:

python 复制代码
from openpyxl import load_workbook

def update_excel(file_path, row, col, new_value):
    try:
        # 打开工作簿
        wb = load_workbook(file_path)
        ws = wb.active
        
        # 更新指定单元格
        ws.cell(row=row, column=col).value = new_value
        
        # 保存修改
        wb.save(file_path)
        print(f"已更新第 {row} 行第 {col} 列的数据为: {new_value}")
    except FileNotFoundError:
        print(f"文件不存在: {file_path}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:修改Excel文件中的数据(将第2行第3列的部门改为"研发部")
if __name__ == "__main__":
    file_path = "D:/a.xlsx"
    update_excel(file_path, 2, 3, "研发部")

5. 针对你的需求:写入aaa字段

如果要将用户输入的aaa字段写入Excel文件的特定列(假设为B列),可以这样实现:

python 复制代码
from openpyxl import load_workbook

def write_aaa_to_excel(file_path, aaa_value):
    try:
        # 打开工作簿
        wb = load_workbook(file_path)
        ws = wb.active
        
        # 获取当前最后一行的下一行
        new_row = ws.max_row + 1
        
        # 在B列(第2列)写入aaa字段
        ws.cell(row=new_row, column=2).value = aaa_value
        
        # 保存修改
        wb.save(file_path)
        print(f"已成功写入aaa字段: {aaa_value}")
    except FileNotFoundError:
        print(f"文件不存在: {file_path}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:写入aaa字段
if __name__ == "__main__":
    file_path = "D:/a.xlsx"
    aaa_value = input("请输入aaa字段内容: ")
    write_aaa_to_excel(file_path, aaa_value)

注意事项

  1. 文件路径权限 :确保Python程序有访问D:/a.xlsx的权限(特别是Windows系统,可能需要管理员权限)。
  2. 文件存在性:操作前最好检查文件是否存在,避免错误。
  3. 数据类型:Excel中的数据类型可能需要特别处理(如日期、数字格式等)。
  4. 并发操作:如果多个进程同时操作同一个Excel文件,可能会导致冲突,需考虑加锁机制。

通过以上代码,你可以灵活地操作Excel文件,实现数据的增删改查。