使用 Python 打开 Excel 电子表格 (.xlsx)

Posted

技术标签:

【中文标题】使用 Python 打开 Excel 电子表格 (.xlsx)【英文标题】:Open Excel Spreadsheet (.xlsx) with Python 【发布时间】:2019-08-27 13:33:21 【问题描述】:

我从客户那里获得了数百个自动生成的 Excel 文件。我很确定它们是使用 SQL 网站数据库中的数据生成的。然后我将这些文件合并为一个并上传到访问数据库,该数据库连接了一个不同的软件,该软件可以提取信息并从中创建艺术品。出于某种原因,由于用户从不打开 Excel 文件,因此通过的数据带有一些不规则的空格等。

为了解决这个问题,我编写了一个简单的 python 程序,它在文件夹中打开一个文件,保存并关闭它,然后打开下一个文件 - 该文件夹中的每个文件都重复此操作。

我尝试使用各种可用的 Excel 解析器 例如 openpyxl - 没有运气 - 因为它实际上并没有像真正的用户那样保存它。 我还尝试了简单的 open(excelFile w/r),结果相同。

我认为的问题是在线门户生成的 Excel 文件是不同的版本(不是 100% 确定)


import os
import time
Path = "C:/Users/username/Desktop/PythonFiles/New folder/"
filelist = os.listdir(Path) 
from pynput.keyboard import Key, Controller
keyboard = Controller()
for i in filelist:
    myPath= "C:/Users/username/Desktop/PythonFiles/New folder/" +  i
    os.startfile(myPath)
    time.sleep(3)
    keyboard.press(Key.ctrl)
    keyboard.press('s')
    keyboard.release('s')
    keyboard.press('w')
    keyboard.release('w')
    keyboard.release(Key.ctrl)

现在我的问题。有没有人知道我可以像在这里一样打开这些文件中的每一个 - 但不使用计时器,而是检查程序何时完全打开,然后执行'ctrl + s,ctrl + w)。我问是因为我似乎找不到一个完美的时间让它工作。有时 excel 需要超过 3 秒才能打开,导致无法正常关闭。

【问题讨论】:

虽然 excel 格式很多,但我看不出有什么实质性信息可以推断,您需要什么子集。 (没有运气不是考虑解决方案的详细程度。) 你可以为此编写一个 Autoit 脚本。应少于 10 行代码 对不起,格式是.xlsx 我们怎么知道您的文件已经损坏到标准 python 电子表格解析器无法打开它们,但它们实际上可以与 MS 软件一起使用? 文件没有损坏。我可以很好地打开它们。该文件随后与名为 NiceLabel 的软件一起使用 - 该软件查看 excel 数据库中的每个单元格并从中填充变量。但由于某种原因,除非该文件先前已被用户打开并简单地保存了 NiceLabel 提取的数据,否则会有所不同。 (它在数据后添加回车) - 例如。 (Hello - 变成 Hello ) CR = 回车 【参考方案1】:

我知道,它不是 Python,但也许它可以帮助你。 (Autoit - autoitscript.com)

#include <File.au3>
#include <Excel.au3>
Local $files_A = _FileListToArray('C:/Users/username/Desktop/PythonFiles/New folder/', '*.xlsx',  $FLTA_FILES, True)
;~ _ArrayDisplay($files_A) ; show all the files found
Local $oExcel = _Excel_Open(False, True, True, True, True)
For $i = 1 To 5 ; UBound($files_A) -1
    $oWorkbook = _Excel_BookOpen($oExcel, $files_A[$i])
    $oWorkbook.Saved = False
    _Excel_BookSave($oWorkbook)
    _Excel_BookClose($oWorkbook, True)
    If @error Then MsgBox(16, 'ERROR', 'Saving ...')
Next
_Excel_Close($oExcel)

【讨论】:

这将更改文件的修改时间戳

以上是关于使用 Python 打开 Excel 电子表格 (.xlsx)的主要内容,如果未能解决你的问题,请参考以下文章

在 x64 系统上的 .NET 中打开 Excel 电子表格

Excel 在团队中使用电子表格打开、修改、保存

在未安装 Excel 的情况下打开、计算、关闭 MS Excel 电子表格 [EPPlus]

Python - 如何防止for循环覆盖相同的excel表

Python按单元格读取复杂电子表格(Excel)数据实践

Python按单元格读取复杂电子表格(Excel)数据实践