张岂逢 2021-05-30 19:21 采纳率: 60%
浏览 485

python openpyxl 读取excel,并写入excel数据成功,但打开excel 文件报错

代码如下:

# author:Administrator
# date:2021/05/30
import openpyxl,os,re
import requests #第三方下载器
from requests import RequestException
from bs4 import BeautifulSoup

#定义list 存入D列 最新净值数据
list_d = []
def getExcel_D(file_url):
    excel_text = openpyxl.load_workbook(file_url)
    sh = excel_text['Sheet2']
    for cases in list(sh.rows)[1:]:
        case_id = cases[0].value
        case_data = cases[3].value  #昨日净值
        case_url = cases[4].value
        url_head = 'http://fund.eastmoney.com/%s.html?spm=search' %case_url
        new_number = getRequestUrl(url_head) #最新净值

        list_d.append([case_id,case_data,url_head,str(new_number[0])])


    # 关闭工作薄
    excel_text.close()
    return list_d

def getRequestUrl(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            html =  response.content.decode("utf-8")
            soup = BeautifulSoup(html,'lxml')
            data = soup.select('#body > div:nth-child(11) > div > div > div.fundDetail-main > div.fundInfoItem > div.dataOfFund > dl.dataItem02 > dd.dataNums > span.ui-font-large.ui-color-green.ui-num')
            #print("1",data)
            if not data:
                data = soup.select('#body > div:nth-child(11) > div > div > div.fundDetail-main > div.fundInfoItem > div.dataOfFund > dl.dataItem02 > dd.dataNums > span.ui-font-large.ui-color-red.ui-num')
                pattern = re.compile('<span class="ui-font-large ui-color-red ui-num">(.*?)</span>',re.S)
                items = re.findall(pattern,str(data[0]))
                #print("2",data)
                return items
            pattern = re.compile('<span class="ui-font-large ui-color-green ui-num">(.*?)</span>',re.S)
            items = re.findall(pattern,str(data[0]))
            #print("最新净值",items)
            return items
        return None
    except RequestException:
        return None




def main():
    BASEDIR = os.path.join(os.path.expanduser("~"),"Desktop")
    url = os.path.join(BASEDIR,"个人基金仓位分析表.xlsx")
    listd = getExcel_D(url)
    excel_text = openpyxl.load_workbook(url)
    sheet = excel_text['Sheet2']
    # obj[0] = 基金名称
    # obj[1] = 基金昨日净值
    # obj[2] = 基金url
    # obj[3] = 基金最新净值
    for num,obj in enumerate(listd,2):
        sheet.cell(num,3).value = str(obj[1])   #更新昨日净值
        sheet.cell(num,4).value = str(obj[3])    #更新最新净值

    excel_text.save(url)    #保存

    # 关闭工作薄
    excel_text.close()

if __name__ == '__main__':
    main()

打开文件报错如下:

1.

2.点是之后:

3.修复完成后,正常使用。但我不想让报错。求解决方法!!!! 求路过大神帮帮孩子

 

 

  • 写回答

1条回答 默认 最新

  • Skybeyond2022 2022-04-01 08:28
    关注

    我也遇到这个问题。
    我自己的Excel跑完程序是可以打开的,同事的计算机跑完程序就会报错。
    不知道如何解决。
    你解决了吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路