python openpyxl 向已存在的excel表格中写入数据 及可能出现的Error处理

虽然平时数据文件读写都是用的.csv,但还是偶然需要把数据写入恶心的excel表格。在CSDN上搜了很多相关的博客,发现都是用的xlutils,xlrd,xlwd三者的结合。直接拿来用了之后,发现写入后的excel表格就会格式错误打不开。

于是又一次去StackoverFlow上转了圈(这个社区真的超赞),发现了很多简单的方法。这里就只提供openpyxl库相关的方法吧。

import openpyxl

xfile = openpyxl.load_workbook('test.xlsx')

sheet = xfile.get_sheet_by_name('Sheet1')
sheet['A1'] = 'hello world'
xfile.save('text1.xlsx')

改写只需要几行,与xlutils相比不知道爽到哪里去啦~

 

#################################################################################################

不过在处理其他表格时,突然又开始报错:

AttributeError: 'tuple' object has no attribute 'value'

没事,继续在StackoverFlow上找,把对应行列写入数据的那一行换一种写法就好:

##sheet['A1'] = 'hello world'
sheet.cell(row=1, column=1).value = 'hello world' 

 

################################################################################################

因为之前用的xlutils处理并覆盖了测试文件,再用的openpyxl的第一次,出现了另一个Error,一度让我怀疑openpyxl的可行性。

zipfile.BadZipFile: File is not a zip file

继续必应走起(现在还有人用广告满天飞的百度?),发现这与excel文件本身的格式有关:

Excel 2003 format (xls)格式是binary的,而Excel 2007 format(xlsx)不同,是一个zip file。一个正常的excel文件不是binary 的就是zip file,我这个文件后缀是.xlsx,很可能是xlutils把我的测试文件搞坏了。直接试着打开,果不其然。(第三个reference中,后面也有提到一个既不是xlsx也不是xls的文件也是可以被excel读取的。答者相信这可能是XML Spreadsheet 2003 file format格式,这里就不细细追究了)

 

################################################################################################

reference:

1. https://stackoverflow.com/questions/18849535/how-to-write-update-data-into-cells-of-existing-xlsx-workbook-using-xlsxwriter-i

2. https://stackoverflow.com/questions/48537430/openpyxl-worksheet-object-has-no-attribute-writepython

3. https://stackoverflow.com/questions/31212104/how-to-load-in-python-an-xlsx-that-originally-had-xls-file-extension

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Buildozer打包一个可以读写Excel表格Python Kivy应用程序,你需要做以下几步: 1. 确保你的应用程序能够正确地读取和写入Excel文件,如上一个回答所述。 2. 安装Buildozer:在终端输入 `pip install buildozer` 命令来安装Buildozer。 3. 创建一个名为buildozer.spec的文件。在这个文件,你需要设置一些参数,以便Buildozer知道如何打包你的应用程序。以下是一个基本的buildozer.spec文件示例: ```ini [app] # (str) Title of your application title = My Excel App # (str) Package name package.name = myexcelapp # (str) Package domain (needed for android/ios packaging) package.domain = org.example.myexcelapp # (str) Source code where the main.py live source.dir = . # (list) Source files to include (let empty to include all the files) source.include_exts = py,png,jpg,kv,atlas,xlsx # (list) Application requirements requirements = kivy, openpyxl [buildozer] # (int) Log level (0 = error only, 1 = info, 2 = debug (with command output)) log_level = 2 # (str) Path to build artifact storage, absolute or relative to spec file # build_dir = /home/user/myapp/build/ ``` 在这个示例,我们设置了应用程序的标题、包名称、包域、源代码目录以及要包含的源文件扩展名和应用程序要求(即Kivy和openpyxl)。请注意,我们在 `source.include_exts` 添加了 `xlsx` 扩展名,这样Buildozer会将Excel文件包含在APK文件。 4. 在终端进入应用程序目录,然后运行 `buildozer android debug` 命令来打包应用程序。这个命令将构建一个调试版APK文件,可以在Android设备上进行测试。 5. 等待打包完成。这可能需要一些时间,具体取决于你的应用程序大小和计算机性能。 6. 将生成的APK文件安装到Android设备上进行测试。 请注意,如果你的应用程序有其他依赖项(例如其他Python模块),你需要在 `buildozer.spec` 文件添加它们。另外,如果你想构建发布版本的APK文件,你需要使用 `buildozer android release` 命令并提供签名密钥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值