【Python学习】Day-09 xlsx文件读写

1. Excel介绍

Excel后缀名:.xls .xlsx

    .xls:Excel2007以前的文件后缀名。最多容纳256列16000+行数据 —> xlwt、xlrd .xlsx:Excel2007以后开始使用的后缀名。最多容纳16000+列1048567行数据 —> openpyxl Excel 从2007开始兼容.xls .xlsx

python能够操作excel的模块有: openpyxl、xlsxwriter、xlwt、xlrd、pandas、win32com、xlutils等

    工作簿:一个excel文件就是一个工作簿 工作表:sheet1、sheet2.。。 单元格:excel中的每一个小格

2. 创建xlsx文件

  1. 创建一个excel文件 新建文件:openpyxl.Workbook()
import openpyxl
wb = openpyxl.Workbook()

如果文件存在:openpyxl.load_workbook()

  1. 操作工作表
    创建工作表对象:create_sheet(表名,下标) 不加下标,默认直接在工作簿最后追加工作表
wb.create_sheet(学生成绩, 0)
    移除工作表:remove[‘表名’]
sh1 = wb[Sheet]
wb.remove(sh1)
  1. 从学生成绩工作表插入信息
    方法一:使用cell(行号, 列号) —>定位单元格;value —>获取单元格内容
wb[学生成绩].cell(1, 1).value=姓名
print(wb[学生成绩].cell(1, 1).value)
sh12 = wb[学生成绩].cell(1, 2).value=性别
print(sh12)
    方法二:使用[行号列号] —>定位单元格
wb[学生成绩][AAA1] = 姓名
print(wb[学生成绩][AAA1].value)
  1. 保存文件
wb.save(../file/学生成绩.xlsx)

3. csv文件数据写入xlsx文件

import os
import csv
import openpyxl

# 新建xlsx后缀文件
wb = openpyxl.Workbook()
# 新建工作表
wb.create_sheet(成都链家二手房数据汇总, 0)

# listdir() :能读取指定文件夹下的所有子文件
file_list = os.listdir(../file/成都链家二手房数据/)
# print(file_list)
title = [行政区, 标题, 小区, 街道, 户型, 面积, 装修, 单价, 总价]
for h in range(len(title)):
    wb[成都链家二手房数据汇总].cell(1,h+1).value = title[h]
# count: 计数进行号的递增
count = 1
for i in file_list:
    if i[-9:] == 二手房信息.csv and i[:2] == 成都:
        f = open(f../file/成都链家二手房数据/{
            
     i}, r, encoding=utf-8)
        read_data = csv.reader(f)
        next(read_data)
        for j in read_data:
            count += 1
            # for x in enumerate(j):
            for x in range(0, len(j)):
                # 根据,每一条数据长度判断写n列
                wb[成都链家二手房数据汇总].cell(count,x+1).value = j[x]
        f.close()
wb.save(../file/成都链家二手房数据.xlsx)

4. xlsx文件的读取

import openpyxl

# max_row/max_column
# 加载xlsx
wb = openpyxl.load_workbook(../file/成都链家二手房数据.xlsx)
# 从工作簿中找工作表
ws = wb[成都链家二手房数据汇总]

# max_row:获取xlsx文件最大行数
rows = ws.max_row
# print(rows)
# max_column:获取xlsx文件最大列数
cols = ws.max_column
# print(cols)

# 行
for i in range(1, rows+1):
    # 列
    for j in range(1, cols+1):
        print(ws.cell(i,j).value)
经验分享 程序员 微信小程序 职场和发展