Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何确保从电子表格中获取的任何数据都没有xml内容?_Python_Excel_Openpyxl_Win32com - Fatal编程技术网

Python 如何确保从电子表格中获取的任何数据都没有xml内容?

Python 如何确保从电子表格中获取的任何数据都没有xml内容?,python,excel,openpyxl,win32com,Python,Excel,Openpyxl,Win32com,我从一个excel powerquery中获取数据,它从一个SQL数据库中获取数据。(这不是最好的方法,但目前对我来说很有效。) 从该数据电子表格中,我正在搜索特定的工作编号和相关编号,以便自动输入自定义电子表格 然后,我想自动打开、计算、保存,然后关闭excel,以计算并保存所有公式 我遇到的是,有时,从电子表格中获取的数据非常好,有时它包含某种xml内容,使得自动excel工作在打开步骤失败 数据的获取使用openpyxl 大部分看起来像这样 wb[sheet]['E11'].值=wbd['

我从一个excel powerquery中获取数据,它从一个SQL数据库中获取数据。(这不是最好的方法,但目前对我来说很有效。)

从该数据电子表格中,我正在搜索特定的工作编号和相关编号,以便自动输入自定义电子表格

然后,我想自动打开、计算、保存,然后关闭excel,以计算并保存所有公式

我遇到的是,有时,从电子表格中获取的数据非常好,有时它包含某种xml内容,使得自动excel工作在打开步骤失败

数据的获取使用openpyxl 大部分看起来像这样

wb[sheet]['E11'].值=wbd['XXXXX'].单元格(行=yyyy,列=7).值
wb[表]['E12'].值=wbd['XXXXX'].单元格(行=YYYY,列=8).值
或者像这样

获取相关值的字典后。 此成本=0 对于costTypeDictionary[AAAA]['BBBBB']中的uu。拆分(): thisCost+=ccccccc.get(\u0) 成本+=此成本 excel自动位如下所示

excel=win32.gencache.EnsureDispatch('excel.Application'))
工作簿=excel.Workbooks.Open(saveLoc+“\\”+jobName+newFileXlsx)
工作簿。保存()
工作簿.关闭()
excel.Quit()
它有时会起作用。数据被抓取,没有问题。但在其他情况下,excel会产生如下错误

请注意,openpyxl打开或使用的任何电子表格中都没有命名范围
删除的功能:从/xl/workbook.xml部分(工作簿)命名的范围

python自动化还在pywintypes模块中产生错误。
pywintypes.com_错误:(-2147352567,“发生异常”。(0,“Microsoft Excel”,“工作簿类的打开方法失败”,“xlmain11.chm”,0,-2146827284),无)

因此,从我所看到的情况来看,由于手动检查数据没有发现任何明显的问题/我不知道要查找什么,在
坏的
数据集中有一个额外的东西不在
好的
数据集中,即使这两个数据都来自同一个源,并且以与openpyxl完全相同的方式输入

这使我再次回到上面的问题上来。如何确保我输入的数据没有任何此类xml内容?

找到了原因

我在一个部分中使用openpyxl删除了一个未使用的工作表

如果天数>=150:
表=‘每月’
del wb[“每周”]
其他:
工作表='每周'
del wb[“每月”]
事实证明。任何在150天内删除周工作表(位于列表位置1)的操作都没有问题。每周工作表的
localSheetId=“1”
仍会设置在某个位置,这会导致此部分不匹配,因为它在工作表删除过程中变为位置0

最后,删除两个删除位“修复”了这个问题

如果天数>=150:
表=‘每月’
其他:
工作表='每周'

尽管不必保留无关的工作表会很好。

例外情况与显示的代码无关。这是事实,这就是为什么我试图指出它有时有效,有时无效的原因。我相信这是由于我正在获取的数据中的某些内容,所以我正在寻找方法来清理传入的数据。具体来说:EXCEP是否与openpyxl直接相关?如果是,请包括相关代码。如果没有,请移除标签。使用xlwings远程控制Excel可能会更成功。我认为这可能与openpyxl有关,因为我是如何从数据电子表格中获取数据的。是否有一些openpyxl设置可以确保单元格值不包含任何关联的xml标记?data_only=True没有帮助。