Tag: python

Python干净的方式来包装单个语句在一个try块除外

我目前正在使用com做一些Python自动化的Excel。 它function齐全,做我想做的,但我发现了一些令人惊讶的事情。 有时,我使用的一些Excel命令将会失败,并且没有明显的原因。 其他时候,他们会工作。 在我正在做的VB的等价代码中,这个问题显然被认为是正常的,并用一个On Error Resume Next语句贴满。 当然,Python没有这样的说法。 try except循环try except ,我不能在整个集合中包装整个集合,因为它可能在一半以内“失败”,并且不能正确完成。 那么,将几个独立的语句封装到除了block之外的尝试中是怎样的一种pythonic方法呢? 具体来说,比以下更清洁: try: statement except: pass try: statement except: pass 相关的代码是excel.Selection.Borders位。 def addGridlines(self, infile, outfile): """convert csv to excel, and add gridlines""" # set constants for excel xlDiagonalDown = 5 xlDiagonalUp = 6 xlNone = -4142 xlContinuous = 1 xlThin = 2 […]

在Python中使用openpyxl将行插入到Excel电子表格中

我正在寻找使用openpyxl将行插入电子表格的最佳方法。 实际上,我有一个电子表格(Excel 2007),它有一个标题行,后面是(最多)几千行数据。 我正在寻找作为实际数据的第一行插入行,所以在标题之后。 我的理解是append函数适合将内容添加到文件的末尾 。 阅读openpyxl和xlrd(和xlwt)的文档,除了手动循环内容并插入新表格(插入所需的行之后)之外,我找不到任何明确的方法来完成此操作。 鉴于我迄今为止在Python方面的经验有限,我正试图理解这是否是最好的select(最pythonic!),如果有的话可以提供一个明确的例子。 特别是我可以用openpyxl读写行,还是必须访问单元格? 另外我可以(通过)写同一个文件(名称)?

我如何强制python(使用win32com)创build一个新的Excel实例?

我正在自动化一些需要很长时间的Excel相关任务。 我创build一个Excel实例使用: excel = win32.gencache.EnsureDispatch('Excel.Application') wb = excel.Workbooks.Add() 然而,脚本开始运行后,如果我select打开的Excel工作簿(而不是一个Python正在工作),python脚本崩溃。 但是,如果我打开一个新的Excel工作簿并input东西,python脚本不受影响。 有没有一种特殊的方式可以调用excel来防止这种情况的发生? 还是其他解决scheme? 编辑:这似乎工作。 excel = win32.DispatchEx('Excel.Application')

Python:在工作表中刷新数据透视表

我正在构build一个python脚本,它允许我打开一个Excel 2010工作表并打印出来。 我得到了大部分的方式 import win32com.client office = win32com.client.Dispatch("Excel.Application") wb = office.Workbooks.Open(r"path\to\excel\file\to\print.xlsm") count = wb.Sheets.Count for i in range(count): ws = wb.Worksheets[i] pivotCount = ws.PivotTables().Count for j in range(1, pivotCount+1): #TODO code to refresh each pivot table ws.PrintOut() print "Worksheet: %s – has been sent to the printer" % (ws.Name) 正如你所看到的,我仍然缺less工作表中数据透视表的刷新。 用于刷新的VBA代码是: ActiveSheet.PivotTables(1).PivotCache.Refresh 我似乎无法将代码分解成python win32com语法。 我得到的最接近的是: […]

Python:无需剪贴板,从Office / Excel文档访问embedded的OLE

我想使用Python添加和提取Office / Excel文档中的文件。 到目前为止,添加东西很容易,但是对于解压缩我还没有find一个干净的解 为了清楚我已经得到了什么,以及我已经写了下面的小例子test.py ,并进一步解释。 test.py import win32com.client as win32 import os from tkinter import messagebox import win32clipboard # (0) Setup dir_path = os.path.dirname(os.path.realpath(__file__)) print(dir_path) excel = win32.gencache.EnsureDispatch('Excel.Application') wb = excel.Workbooks.Open(dir_path + "\\" + "test_excel.xlsx") ws = wb.Worksheets.Item(1) objs = ws.OLEObjects() # (1) Embed file f = dir_path + "\\" + "test_txt.txt" name = […]

在OpenPYXL中运行5万行Excel文件的最快方法

我在Python中使用openpyxl,我试图通过5万行,并从每行抓取数据,并将其放置到一个文件中。 但是,我发现它越来越慢,我进入它越来越慢。 第一条1k线的速度非常快,不到一分钟,但在此之后,下一条1k线需要更长,更长的时间。 我正在打开一个.xlsx文件。 我不知道打开一个.txt文件作为一个CSV或什么东西或阅读一个JSON文件或更快? 或者转换成某种会更快读取的东西? 我在给定列中有20个唯一值,然后每个值的值都是随机的。 我试图抓住每个值的整个唯一值列的string。 价值1:1243,345,34,124,价值2:1243,345,34,124等 我正在运行“值”列表,查看名称是否存在于文件中,如果存在,则会访问该文件并将其添加到新值中,如果文件不存在,则会创build文件并然后将其设置为追加。 我有一个字典,所有的“附加写文件”的东西连接到它,所以任何时候我想要写东西,它会抓住文件名,附加的东西将在字典中可用,它会查找和写入该文件,所以它不会保持每次运行时打开新的文件。 第一个1K花了不到一分钟..现在我在4K到5K的纪录,它已经准备好了5分钟..似乎需要更长的时间,因为它在logging上升,我不知道如何加快速度。 它根本不打印到控制台上。 writeFile = 1 theDict = {} for row in ws.iter_rows(rowRange): for cell in row: #grabbing the value theStringValueLocation = "B" + str(counter) theValue = ws[theStringValueLocation].value theName = cell.value textfilename = theName + ".txt" if os.path.isfile(textfilename): listToAddTo = theDict[theName] listToAddTo.write("," + theValue) if […]

将Excel文件加载到numpy 2D数组中

有没有更容易的方法来加载一个Excel文件直接到一个Numpy数组? 我已经从numpy文档中查看numpy.genfromtxt自动加载function,但不直接加载excel文件。 array = np.genfromtxt("Stats.xlsx") ValueError: Some errors were detected ! Line #3 (got 2 columns instead of 1) Line #5 (got 5 columns instead of 1) …… 现在我正在使用openpyxl.reader.excel读取excel文件,然后附加到numpy的2D数组。 这似乎是低效的。 理想情况下,我想不得不将excel文件直接加载到numpy 2D数组中。

如何禁用Excel自动识别数字和文本

我用Python来生成一个CSV文件。 但是,当我在Excel中打开它时,Excel会自动将一个string识别为一个数字,如果它可以被转换。 例如33E105变成33*10^105 ,这实际上是一个ID,而不是一个数字。 如何在打开CSV文件时在Excel中禁用此function? 或者我需要求助于一个excel-python库来输出一个excel文件并指定自己的格式? 我也在网上find了一个没有很好答案的类似问题 。 谢谢!

在pandas数据框上使用str.contains

这个pandaspython代码生成错误信息, “TypeError:一元操作数的错误types:'float'” 我不知道为什么,因为我试图操纵一个str对象 df_Anomalous_Vendor_Reasons[~df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*")] #sorts, leaving only cases where reason is NOT File or Registry 有人有什么想法?

Python:xlrd从花车辨别date

我想用Python中的xlrd导入包含文本,数字和date的文件。 我尝试了这样的: if "/" in worksheet.cell_value: do_this else: do_that 但那是没有用的,因为我发现date被存储为浮动,而不是string。 要将它们转换为datetimetypes,我做了: try: get_row = str(datetime.datetime(*xlrd.xldate_as_tuple(worksheet.cell_value(i, col – 1), workbook.datemode))) except: get_row = unicode(worksheet.cell_value(i, col – 1)) 当单元格包含文本时,我有一个例外。 现在我想把数字和date作为date,因为现在所有的数字都被转换成date。 有任何想法吗?