Tag: python

Pywin32 Excel写入限制?

我使用pywin32和通用的方式来写入范围到Excel,通过获取一些范围对象,然后写入 range.Value=my_data (这和VBA的语法完全相同) 现在,如果我有一组相当大的单元格(> 6000个字符),并通过设置范围对象的值一次性写出它们,则有时会在这些单元格之一抛出exception(但是将单元格写入本身会工作)。 你知道Excel的任何限制和写范围操作,我应该考虑? 例外看起来像 Traceback (most recent call last): File "test2.py", line 9, in <module> e.write_area([tuple("a"*10000 for i in range(20))]*20, sheet="Tabelle1") File "excel_com.py", line 209, in write_area self.get_range(col, row, col+num_col-1, row+num_row-1, sheet=sheet).Value=data File "C:\Python31\lib\site-packages\win32com\client\dynamic.py", line 550, in __setattr__ self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value) pywintypes.com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, None, None, None, 0, […]

使用Excel处理大量的输出数据:是Excel数据库交互问题的正确解决scheme吗?

我有各种分析程序输出大量数据的情况,但是我可能只需要操作或访问特定Excel工作簿中的某些数据部分。 数字可能会随着更新的分析运行而变化,我希望这些更改能够以尽可能自动化的方式反映在Excel中。 另一个重要的考虑是我也使用Python来处理一些数据,所以把数据放在Python和Excel容易访问的地方是非常有益的。 我只知道一点关于数据库,但我想知道如果使用一个将是一个很好的解决scheme,我所需要的 – 据我所知,Excel有数据库交互function,就像Python一样。 魔鬼当然是在细节中,所以我需要一些帮助来确定我实际设置的系统。 从我目前阅读的内容(在过去一小时),到目前为止,我已经提出了简单的计划: 1)build立一个SQLite托pipe数据库。 为什么SQLite? 那么,我不需要一个可以pipe理大量并发访问的数据库,但是我确实需要一些设置简单,易于维护和最多可以供3-4人使用的东西。 我也可以使用SQLite Administrator来帮助devise数据库文件。 2 a)使用ODBC / ADO.NET(我还没弄清楚两者之间的区别)来帮助Excel访问数据库。 我认为这将是最棘手的部分。 2)Python已经有了内置的sqlite3模块,所以不用担心那里的接口。 我可以使用它将输出数据设置到SQLite托pipe数据库中! 放下一些具体的问题: 1)根据我的访问要求,服务器less的数据库是pipe理我的数据的一个好的解决scheme吗? 如果没有,我会很感激替代的build议。 build议阅读? 值得一看的东西? 2)Excel-SQLite交互:我可以做一些帮助,清除那里的细节… ODBC或ADO.NET? 指向一些很好的教程? 等等 3)最后但并非最不重要的一点是,要教一个非程序员如何使用数据库查询来设置电子表格(假设他们愿意花一些时间熟悉,但不是很许多)? 我想现在就来涵盖它,谢谢你的时间!

如何读取电子表格单元格的显示值,而不是公式?

我有一个程序,通过访问它的“文本”成员来读取电子表格中的单元格的值(通过COM)。 当我使用Excel 2003时,我的程序正确地返回了单元格的显示值。 现在我正在使用OpenOffice Calc,取而代之,我正在取回单元格中的公式('= SUM(F8:F10)')。 使问题复杂化,我正在使用一个名为AutomateIT的工具! 让我把Calc看作是Excel,所以可能是因为这个问题而不是Calc。 我的程序是在Python中,我使用win32com.client库来创buildCOM调度程序。 这是Python代码的本质(对于包含公式的单元格,“空”函数总是返回false): from win32com.client import Dispatch def empty(cell): """Returns false if the specified cell has a non-zero value in it""" val = sheet.Range(cell).Text return val == 0.0 or val == '' or val == None xlApp = Dispatch('Excel.Application') # Actually opens OpenOffice Calc, thanks to AutomateIT! xlApp.Workbooks.Open('myfile.ods') […]

在python中使用excel插件的问题

我试图用python和win32com加载一个excel工作簿到一个excel的实例中,我打开了一个插件 我用来打开文件的代码是这样的。 excel=win32com.client.Dispatch("Excel.Application") source = excel.Workbooks.Open('test.xlsm') 问题是,这实际上是打开一个单独的Excel实例,而没有插件激活。 我曾尝试打开该插件文件,然后像这样的工作簿。 excel=win32com.client.Dispatch("Excel.Application") addin = excel.Workbooks.Open('addin.xla') source = excel.Workbooks.Open('test.xlsm') 但是当我尝试使用插件,我得到一个类似这样的错误。 无法运行macros“sbex.xla!runQuery” 任何想法都会有所帮助。

Python Excel从第二列开始写csv的值

我使用XLWT从.csv编写excel文件,并将csv中的第一列作为行的样式。 我怎样才能开始写每行的第二列开始的值(如不打印出的值,例如,“headerStyle”)? 我已经尝试了几种不同的方式,例如创build一个col_count,但没有任何运气。 row_count = 0 style = rowStyle #Read each row and write to sheet for row in csv_input: #Iterate through each column for col in range(len(row)): if col == 0: style = row[col] else: if(is_number(row[col]) == True): sheet.write(row_count,col,float(row[col]),style) else: sheet.write(row_count,col,row[col],style) #Increment row_count row_count += 1 任何帮助表示赞赏! 谢谢! 我终于搞清楚了。 对于任何感兴趣的人来说,一个问题就是风格是以stringforms回来的,所以我创build了一个函数来解决这个问题 def assign_style(string): if string=='headerStyle': […]

如何用xlrd读取公式

我正在尝试做一个parsing器,读取几个excel文件。 我通常需要在一行的底部find所有上层元素的值。 所以单元格的值实际上是“= sum()”或者“A5 * 0.5”可以说…对于用excel打开这个文件的用户来说,它看起来像一个数字,这很好。 但是,如果我试着用ws.cell(x,y).value读取这个值,我什么都没有得到。 所以我的问题是如何读取这种types的字段与xlrd,如果有可能读取它像ws.cell(x,y).value或类似的东西? 谢谢

BeautifulSoup + xlwt:将HTML表格的内容放入Excel中

我正在尝试(用一个小python脚本)将一个在线网页的HTML表格的内容放在Excel工作表中。 一切工作都很好,除了“Excel的东西”。 #!/usr/bin/python # –*– coding:UTF-8 –*– import xlwt from urllib2 import urlopen import sys import re from bs4 import BeautifulSoup as soup import urllib def BULATS_IA(name_excel): """ Function for fetching the BULATS AGENTS GLOBAL LIST""" ws = wb.add_sheet("BULATS_IA") # I add a sheet in my excel file Countries_List = ['United Kingdom','Albania','Andorra'] Longueur = len(Countries_List) […]

Excel DisplayAlerts奇怪的行为:“一个或多个无效的引用”的错误消息

我有一个Python脚本,使用Excel的COM接口从各种来源的数据填充Excel文件。 这是一个片段: file=win32com.client.Dispatch("Excel.Application") #various manipulation goes here file.DisplayAlerts=False sheet.Delete() file.DisplayAlerts=True 我需要删除其中一个表后填写所有内容,所以我closuresDisplayAlerts,所以它不要求我确认删除。 之后我想再打开,所以用户不会丢失数据。 但是,重新启动DisplayAlerts后,切换工作表会提示给我这样一条消息:“此工作表中的公式包含一个或多个无效的引用,请确认您的公式包含有效的path,工作簿,范围名称和单元格引用”。 我通常不会收到这个消息,我所有的公式都按预期工作。 我怎样才能避免这个消息? 我很确定这个消息与我的图表在数据范围内有很多#N / A值有关(所以点不能被绘制)。 但是我能做些什么来摆脱这些信息,为什么在这三行代码之后出现呢? 此外,只是closures再次切换DisplayAlerts不会提示消息:删除在此发挥作用。 另外,为什么这个消息不只是告诉你它在哪里看到一个问题,是否有一些很好的理由? 消息仅在纸张切换到第一次时出现,并且每次对图表范围进行编辑时都会返回。 此外,它不出现,如果我只是删除表没有closuresDisplayAlerts。

worksheet.iter_rows()不从电子表格中提取任何数据

我有一个使用openpyxl的iter_rows函数parsing数据的电子表格。 但是,当我循环使用以下表格: range_expr = "{col}{startrow}:{col}{endrow}".format(col='C',startrow=4,endrow=ws.get_highest_row()+1) for row in ws.iter_rows(range_string=range_expr): print row if len(row) > 0: cell = row[0] if str(cell.value).isdigit(): address.append(cell.value) else: continue print address raw_input("enter to continue") 第三行只是发出了空的括号,这意味着第一个if语句将总是评估为false,并且没有值会附加到地址。 我感到困惑的是,为什么当excel文档中有数据时, print row什么也不做。 在此先感谢大家。

使用Python来衡量audio输出水平?

有没有一种方法来测量Python中的audio输出水平? 我想每十分之一秒测量30秒audio文件的音量,然后将数据导出到Excel等。 这可能吗?