丹爷:python处理xls和xlsx表格时的版本兼容和乱码问题


转载请标明出处:
https://dujinyang.blog.csdn.net/
本文出自:【奥特曼超人的博客】


人工智能C++杜锦阳dujinyang

丹爷:你遇到过python处理xls和xlsx表格时的版本兼容和乱码问题吗?

——来自丹爷与周董的一场真实血泪职场交锋


第一章:错误如魔,灵魂出窍

午后的办公室,丹爷一道愤怒的咆哮打破了宁静——吃着的薯片都差点喷出来了

“周董!!!我刚写好的脚本崩了!!!”😤

周董端着咖啡走了过来,慢悠悠地瞄了眼丹爷的屏幕。只见 Python 控制台上疯狂输出着一个错误信息,几乎要把整个终端屏幕填满:

xlrd.biffh.XLRDError: Excel xlsx file; not supported

“你这是……用 xlrd 读取 .xlsx 文件了?”周董皱起了眉头,仿佛遇到了什么古老的禁术。

“对啊,怎么了?昨天用还行呢!”丹爷满脸的迷茫与无奈。😩

周董一脸‘学术鄙视链’的表情,悠悠道:

“从 xlrd 1.2.0 起,它已经不再支持 .xlsx 格式了,得换个方案啦。”

“什么?!这也能有变动?”丹爷彻底傻眼了,“我明明昨天还好好的!”

周董叹了口气,仿佛看透了丹爷的焦虑:“技术的世界,可不会等人啊。”

📸 示例报错截图

  • 报错截图1.jpg

第二章:修复遗术,重建数据流

“那我到底怎么改?难道我得重新学Python?”丹爷有些崩溃。

周董抬了抬眉毛,露出了神秘的微笑:“放心,有两种方式,选哪条路都行,或者你可以同时选!”

🧠 方式一:降级 xlrd,回到古老的修仙时代

pip install xlrd==1.2.0

“这就是修仙嘛,回到过去,把一切都重置,复原最原始的力量。”丹爷感叹道。

🧠 方式二:升级修行,换用现代化的 pandas + openpyxl 双剑合璧

“现代化路线,不错,轻松搞定!”周董笑着摆出一副导师的样子。

import pandas as pd

dujinyang_df = pd.read_excel("数据清单.xlsx", engine='openpyxl')
print(dujinyang_df.head())

丹爷敲着键盘,似乎感觉自己正在掌握一种新技能:“哎,我怎么总觉得我写 Python 像是在玩修仙游戏……”

周董微微一笑,轻描淡写地说:“那是因为……你现在刚筑基。”🌚

“我这就是炼气期嘛……”丹爷低头自言自语,突然感觉到一丝兴奋。


第三章:合并单元格,空白的陷阱

“数据读取是成功了,但有些单元格居然是空的?”丹爷看着眼前的表格,心中疑惑。

周董眼睛一亮,露出了久违的“奇技淫巧”表情:“这就涉及到合并单元格的隐藏套路了!”

“合并单元格?”丹爷瞪大了眼睛,“这不就是个坑吗?”

“当然,不要小看它。”周董神秘地笑了笑,“看好了,这可是读取合并区域之术!”

from openpyxl import load_workbook

dujinyang_wb = load_workbook('合并单元格示例.xlsx')
dujinyang_ws = dujinyang_wb.active

for dujinyang_range in dujinyang_ws.merged_cells.ranges:
    dujinyang_top_left = dujinyang_ws.cell(dujinyang_range.min_row, dujinyang_range.min_col)
    print(f"{dujinyang_range}: {dujinyang_top_left.value}")

丹爷看到结果后,不禁哀叹道:“原来只有左上角的格子存着内容,其余全是 None,这不就是 Excel 版的阴间了吗?”😱

周董拍了拍他的肩膀:“这叫做合并单元格的深层次理解。”

他露出了神秘的微笑,似乎自己也有几分得意。


第四章:伪装的灵符,乱码之毒

“周董!我刚打开另一个 Excel 文件,里面全是乱码,像这样👇:”

鐖辫〃鍐欏叆鎴愮啛寮忚鎻愮ず

“这是什么鬼啊?是传送门吗?!”丹爷完全懵了。

“那其实不是 Excel 文件,是 CSV 假扮的。”周董得意洋洋地解释道。🕵️‍♂️

“有些 .xls 文件其实是 .csv 用 Excel 打开的产物,别被骗了。”

“真的假的?”丹爷目瞪口呆,“老板果然牛,能创造出这么多‘新式文件’!”

import pandas as pd

dujinyang_df_csv = pd.read_csv('看似xls实为csv.csv', encoding='gbk')  # 或 'utf-8'
print(dujinyang_df_csv.head())

“怪不得老板说这个文件是xls,我一打开就全是乱码,真是层层迷雾!”丹爷忽然恍然大悟。

“老板永远是最强的社会工程师。”周董忍不住笑了出来,给了丹爷一个赞许的眼神。😅


第五章:pandas大法好,一行通万表

周董拍了拍丹爷的肩膀,眼中闪烁着光芒:“其实你只需要一招 pandas.read_excel() 走天下,所有数据问题都能迎刃而解!”

丹爷一边感叹,一边操作着键盘:“真的很简单,感觉自己好像掌握了秘籍!”

import pandas as pd

dujinyang_final_df = pd.read_excel("终极报表.xlsx", sheet_name="Sheet1", engine="openpyxl")
dujinyang_final_df.fillna('', inplace=True)
print(dujinyang_final_df.head())

“接下来,你还可以用这招,轻松把数据保存回 Excel。”周董露出得意的微笑。

dujinyang_final_df.to_excel("已处理数据.xlsx", index=False)

“这……我竟然没想到。”丹爷终于意识到,原来这就是“Pandas大法”的真正威力。


第六章:出差成都,最后的修炼

突然,丹爷的手机响了,是老板的短信:“丹爷,明天去成都出差,记得带上处理好的数据报告!”

丹爷看着眼前的表格,又看了看老板的消息,焦急地说:“周董!我明天得去成都出差,可这些文件还没处理好!怎么办?”

周董点了点头:“既然如此,就在最后一小时内完成吧。”他站起身来,开始在电脑上快速输入一些代码。

“周董,你不打算自己去成都吗?我们可以一起去啊!”丹爷急忙问道。

周董眯了眯眼睛:“不行,我有更重要的事要做——你知道的,技术的世界,没有‘假期’。”😎


尾声:Excel的尽头是宇宙

黄昏时分,整个办公室似乎笼罩在一种神秘的氛围中,灯光昏暗,只有电脑屏幕微弱的光芒闪烁。丹爷盯着屏幕,输入最后一行代码,结果瞬间出来,心中一股莫名的激动涌上心头。

“周董,我好像……悟了。”丹爷眼神坚定,仿佛达到了某种技术的巅峰。

周董转头看了他一眼,眼中闪烁着睿智的光芒:“嗯?悟啥了?”

“悟到 Excel 的尽头,是数据库。”丹爷深吸一口气,像是宣告了一场伟大的发现。

周董突然站起身,指着办公室的门口:“那你现在可以收拾好行李,准备出发了。”

丹爷愣住:“去哪?”

“去成都啊,你的职场晋升之路,就是从这次出差开始的。”周董露出了神秘的笑容。

丹爷一瞬间明白了,他的修行之路不仅仅局限于 Excel 与 Pandas,甚至已经突破了技术的边界,迈向了更广阔的职场宇宙。

“那,去成都前我还能改点代码吗?”丹爷若有所思。

“可以,但记得,改完要将所有报表提交到数据库。Excel只是你通向更大世界的钥匙。”周董点点头,眼中充满了智慧的光辉。

“明白了,周董。出发!”丹爷微笑着站起身,准备踏上那未知的旅程——数据库的尽头,或许就是下一个更大的挑战。


相关博文:


相关阅读:

《C++智能指针及其在资源管理中的应用(智能指针Smart Pointer)》
《项目中C++链表的常见错误与优化策略:代码示例》
《扩展C++中算法中的终极字符串神器:后缀数组(Suffix Array)》
《C++中的数据结构:程序员的“工具箱”与吐槽大会》
《AI中涉及到的算法汇总(精华)》
《别让黑客偷走你的“网银密码”——网络安全那些事儿!》
《DU网络安全意识指南》
《服务器虚拟化:技术概述与应用》
《python深度学习之视频修复系统的应用案例》


感兴趣的后续可以关注专栏或者公众号:
《黑客的世界》
python2048微信公众号


作者:奥特曼超人Dujinyang
来源:CSDN
原文:https://dujinyang.blog.csdn.net/
版权声明:本文为博主杜锦阳原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值