python3操作excel(xls与xlsx版本的爱恨情仇)

背景

本来一直是使用go来搞的。毕竟我不会py。但是excel文件格式比较久,是xls的。目前go语言操作xls存在问题,就是某单元格内容获取不全。但是我用py的第三方库就没有这个问题。所以有了这篇文章。

问题举例:
A1的内容是"我是中国人"

使用目前github的go版本的xls库,获取A1单元格的内容会变成"我是"、“中国人”
导致我写入新表的时候就需要用两个单元格来存,最终排版等等都会错误。

大概操作说明

以下给几个截图,是一个pdf文件,目前已经上传。
链接是我(后面审核通过后会更新)

在这里插入图片描述
该库不能操作xls文件。只能操作xlsx文件。所以操作xlsx文件我还是会用go版本的Excelize。官网链接

操作xls的代码

该库是xlrd,读取xls的内容是正常的。所以读取xls文件可以使用该库。

import xlrd,openpyxl

def XW(fileName,ipName):
    '''
    将文件名称传进来。
    根据ip名称去读取相应的文件。
    再将相应的内容黏贴到同一文件去。
    '''
    destXlsx = "./b.xlsx"
    xlsName = "./a/" + fileName
    book = xlrd.open_workbook(xlsName)  # 实例化对象
    sheet1 = book.sheet_by_index(1)  # 通过sheet索引获得sheet对象
    nrows = sheet1.nrows  # 获取行总数

    workbook = openpyxl.load_workbook(filename = destXlsx)
    sheet = workbook["Sheet1"]

    fMap = {
    "端口": "",
    "协议": "",
    "服务": "",
    }
    headers = sheet1.row_values(1)

    for i in range(2, nrows):
        data = {headers[i]: v for i, v in enumerate(sheet1.row_values(i))}
        ipAddr = {"扫描地址":ipName}
        for k, v in fMap.items():
            if not data.get(k):
                data[k] = fMap[k]
            else:
                fMap[k] = data[k]
        # print(i + 1)
        # print("现在是第",i+1,data)
        if fMap["端口"] == "--":
            fMap["端口"] = "无端口"
        else:
            fMap["端口"] = int(fMap["端口"])
        dataDict = dict((("J",ipAddr["扫描地址"]),("K",fMap["端口"]),("L",fMap["协议"]),("M",fMap["服务"]),("N",data["漏洞名称"]),("O",data["风险等级"]),("P",data["详细描述"]),("Q",data["解决办法"])))
        sheet.append(dataDict)
        workbook.save(filename = destXlsx)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值