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

时间:2019-08-27 13:33:21

标签: python excel

我从客户那里获得了数百个自动生成的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秒钟以上才能打开,导致无法正确关闭。

1 个答案:

答案 0 :(得分:0)

我知道,它不是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)