在金融数据分析中操作矩阵、列表等数据常用的 Python 包是 Pandas ,但是 Pandas 对于 Excel 表格的操作则不那么容易。

Excel文件是一种二进制文件。Python官方发布版本中没有读写excel文件的模块。需要安装第三方模块来实现对excel文件的读写。较为简单而又常用的第三方库为 xlrd(读取Excel文件)、xlwt(向Excel文件中写入内容)。

建议使用 Anaconda 环境,免去 pip install 安装。我们可以选择手动安装。

pip install xlrd
pip install xlwt

Excel文件读取的操作步骤:

  1. 导入模块:xlrd
  2. 打开Excel工作簿:Book
  3. 指定工作簿中的表单:Sheet
  4. 根据行列序号读取内容

Excel文件写入的操作步骤:

  1. 导入模块:xlwt
  2. 构造工作簿:Workbook
  3. 为工作簿添加表单:Worksheet
  4. 根据行列序号写入内容保存文件

以下是读取和写入时主要的方法和属性

Excel读取时主要的方法和属性Excel写入时主要的方法和属性
xlrd.open_workbook(文件名):打开Excel文件xlwt.Workbook():创建Excel文件
sheet_by_index(索引):根据索引获取表单(Book类)add_sheet(名称):添加表单(Workbook类)
sheet_by_name(名称):根据名称获取表单(Book类)xlwt.XFStyle():定义样式
nrows:一共有多少行(Sheet类)xlwt.Font():定义字体
ncols:一共有多少列(Sheet类)xlwt.Alignment():定义对齐方式
cell_value(行序,列序):获取单元格内容(Sheet类)write(行序,列序,内容,样式):向单元格添加内容(Worksheet类)
row_values(行序):获取某一行的内容(Sheet类)write_merge(行序1,行序2,列序1,列序2,内容,样式):合并指定范围单元格,并指定内容
……(更多内容查看帮助文档)……(更多内容查看帮助文档)

下面我们用一个例子来理解读取 Excel 表格

def read_excel(file_name):  # 读取Excel中的内容
    wb = xlrd.open_workbook(filename=file_name)  # 打开文件
    s = wb.sheet_by_index(0)  # 通过索引获取表单,这里获取第一个表单
    items = []  # 定义列表保存所有行信息
    for i in range(s.nrows):  # 循环遍历每一行
        item = []  # 创建列表用于保存每一行记录
        for j in range(s.ncols):  # 循环遍历每一列
            item.append(s.cell_value(i, j))  # 添加每个单元格信息
        items.append(item)  # 添加每行信息
    return items

所以我们利用以上定义的函数 read_excel 就能够返回需要读取的表格的所有内容

schools = read_excel("school.xls")
for school in schools:
    print(school)

下面我们用一个例子来展示如何写入到 Excel 表格

以下是 school.xls 内容

image.png

我们需要将读取的 Excel 文件内容,写入到另一个Excel中,对学校所在省份进行简单判断。第一行合并单元格显示标题。

以下为期望得到的文件。

image.png

我们利用以下代码,判断省份并且分别写入到对应文件中。

def write_excel(items, province):  # 向Excel中写入内容
    wb = xlwt.Workbook(encoding="utf-8")
    s = wb.add_sheet(province + "高校信息表", cell_overwrite_ok=True)
    style = xlwt.XFStyle()  # 定义样式
    font = xlwt.Font()  # 定义字体
    alignment = xlwt.Alignment()  # 定义对齐方式
    font.bold = True  # 加粗
    font.height = 300  # 字体大小
    font.colour_index = 4  # 颜色
    alignment.horz = alignment.HORZ_CENTER  # 水平居中
    alignment.vert = alignment.VERT_CENTER  # 垂直居中
    style.font = font  # 设置字体
    style.alignment = alignment  # 设置对齐方式
    s.write_merge(0, 0, 0, 6, province + "高校信息表", style)
    for j in range(len(items[0])):  # 写入表头
        print("----")
        s.write(1, j, items[0][j])
    count = 2
    for i in range(1, len(items)):
        if items[i][2] == province:
            for j in range(len(items[i])):
                s.write(count, j, items[i][j])
            count = count + 1
    wb.save(province + ".xls")
if __name__ == '__main__':
    schools = read_excel("school.xls")
    write_excel(schools, "江西省")
最后修改:2021 年 12 月 23 日
如果觉得我的文章对你有用,请随意赞赏