python 操作xls

写入文件

demo01

# 读取:xlrd
# 写入:xlwt
# 修改(追加写入):xlutils

import xlrd
import xlwt
from xlutils.copy import copy


def write_excel_xls(path, sheet_name, value):
    index = len(value)  # 获取需要写入数据的行数
    workbook = xlwt.Workbook()  # 新建一个工作簿
    sheet = workbook.add_sheet(sheet_name)  # 在工作簿中新建一个表格
    for i in range(0, index):
        for j in range(0, len(value[i])):
            sheet.write(i, j, value[i][j])  # 像表格中写入数据(对应的行和列)
    workbook.save(path)  # 保存工作簿
    print("xls格式表格写入数据成功!")


def write_excel_xls_append(path, value):
    index = len(value)  # 获取需要写入数据的行数
    workbook = xlrd.open_workbook(path)  # 打开工作簿
    sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
    worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
    rows_old = worksheet.nrows  # 获取表格中已存在的数据的行数
    new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
    new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
    for i in range(0, index):
        for j in range(0, len(value[i])):
            new_worksheet.write(i + rows_old, j, value[i][j])  # 追加写入数据,注意是从i+rows_old行开始写入
    new_workbook.save(path)  # 保存工作簿
    print("xls格式表格【追加】写入数据成功!")


def read_excel_xls(path):
    workbook = xlrd.open_workbook(path)  # 打开工作簿
    sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
    worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格 ['xls格式测试表']
    rowNumber = worksheet.nrows  # 获取总行数据
    colsNumber = worksheet.ncols  # 获取总行数据
    for i in range(0, rowNumber):
        for j in range(0, colsNumber):
            print(worksheet.cell_value(i, j), "\t", end="")  # 逐行逐列读取数据  姓名 	性别 	年龄 	城市 	职业
        print()  # 换行


book_name_xls = 'xls格式测试工作簿.xls'

sheet_name_xls = 'xls格式测试表'

value_title = [["姓名", "性别", "年龄", "城市", "职业"], ]

value1 = [["张三", "男", "19", "杭州", "研发工程师"],
          ["李四", "男", "22", "北京", "医生"],
          ["王五", "女", "33", "珠海", "出租车司机"], ]

value2 = [["Tom", "男", "21", "西安", "测试工程师"],
          ["Jones", "女", "34", "上海", "产品经理"],
          ["Cat", "女", "56", "上海", "教师"], ]

write_excel_xls(book_name_xls, sheet_name_xls, value_title)
write_excel_xls_append(book_name_xls, value1)
write_excel_xls_append(book_name_xls, value2)
read_excel_xls(book_name_xls)

运行输出

xls格式表格写入数据成功!
xls格式表格【追加】写入数据成功!
xls格式表格【追加】写入数据成功!
姓名 	性别 	年龄 	城市 	职业 	
张三 	男 	19 	杭州 	研发工程师 	
李四 	男 	22 	北京 	医生 	
王五 	女 	33 	珠海 	出租车司机 	
Tom 	男 	21 	西安 	测试工程师 	
Jones 	女 	34 	上海 	产品经理 	
Cat 	女 	56 	上海 	教师

更多文档:

demo02

#encoding:utf-8

import json
import requests
import xlwt

def readFile():
    with open("cart.json", "r",encoding='utf-8') as f:
        results = ''
        for data in f.readlines():
            dataJson = json.loads(data)
            results=dataJson['results']

    titles = ["host","title","ip","domain","port","country","province","city","country_name","header","server","protocol","banner","cert","isp","as_number","as_organization","latitude","longitude","icp","fid","cname"]
    print(results[0])
    # 创建一个workbook 设置编码
    workbook = xlwt.Workbook(encoding='utf-8')
    # 创建一个worksheet
    worksheet = workbook.add_sheet('My Worksheet')
    # 写入excel

    for i in range(len(titles)):
        # print(titles[i])
        # 参数对应 行, 列, 值
        worksheet.write(0, i, label=titles[i])

    j = 1
    for i in range(len(results)):
        item = results[i]
        for k in range(len(item)):
            print(j,k,item[k])
            # 参数对应 行, 列, 值
            worksheet.write(j, k, label=item[k])
        j+=1
    # 保存
    workbook.save('Excel_test.xls')


readFile()

读取报错
pandas无法打开.xlsx文件,xlrd.biffh.XLRDError: Excel xlsx file; not supported

原因是最近xlrd更新到了2.0.1版本,只支持.xls文件。所以pandas.read_excel(‘xxx.xlsx’)会报错。

可以安装旧版xlrd,在cmd中运行:

pip uninstall xlrd
pip install xlrd==1.2.0

也可以用openpyxl代替xlrd打开.xlsx文件:

df=pandas.read_excel(‘data.xlsx’,engine=‘openpyxl’)

posted @ 2021-11-10 18:59  HaimaBlog  阅读(170)  评论(0编辑  收藏  举报