Tag: openpyxl

使用openpyxl模块写入电子表格创build一个损坏的电子表格,如何解决zipfile模块?

我有一个使用openpyxl写入电子表格的openpyxl 。 执行程序后,单元格按预期填充,但电子表格已损坏。 Excel修复电子表格,然后我可以再次查看它。 import openpyxl from openpyxl import load_workbook amounts, row = [1, 2, 3, 4, 5], 2 book = load_workbook("output.xlsx") sheet = book.active for i, value in enumerate(amounts): sheet.cell(column=i+1, row=row, value=value) print ("Sheet updating complete.") book.save("output.xlsx") 我曾尝试使用Microsoft的Open XML SDK生产力工具来比较一个好的和不好的文件,并注意styles.xml是缺less的。 我尝试使用从另一个问题获得的以下源代码复制这个,但它并没有解决我的问题。 import zipfile with zipfile.ZipFile('outputcopy.xlsx', 'r') as zgood: styles_xml = zgood.read('xl/styles.xml') with zipfile.ZipFile('output.xlsx', 'a') […]

使用openpyxl插入列

我正在修改一个脚本,修改现有的Excel文档,我需要能够插入列之间的其他两列,如VBAmacros命令.EntireColumn.Insert 。 有没有用openpyxl插入一个这样的列的方法? 如果没有,写任何build议?

我们如何在Python openpyxl包中使用iter_rows()?

我在Python(Canopy)使用openpyxl包来使用excel文件。 我们在这个链接中有这个教程: LINK you can also use the openpyxl.worksheet.Worksheet.iter_rows() method: >>> tuple(ws.iter_rows('A1:C2')) ((<Cell Sheet1.A1>, <Cell Sheet1.B1>, <Cell Sheet1.C1>), (<Cell Sheet1.A2>, <Cell Sheet1.B2>, <Cell Sheet1.C2>)) >>> for row in ws.iter_rows('A1:C2'): … for cell in row: … print cell <Cell Sheet1.A1> <Cell Sheet1.B1> <Cell Sheet1.C1> <Cell Sheet1.A2> <Cell Sheet1.B2> <Cell Sheet1.C2> 我们如何在Python中导入openpyxl.worksheet.Worksheet.iter_rows()方法? 我用这个代码: import openpyxl as op […]

如何创build超链接到同一工作簿中的其他Excel工作表

我正在使用Python的模块openpyxl,并试图创build一个超链接,将带我到同一个Excel工作簿中的不同的选项卡。 做类似下面的事情创build超链接; 然而,当我点击它时,它告诉我无法打开文件。 from openpyxl import Workbook wb = Workbook() first_sheet = wb.create_sheet(title='first') second_sheet = wb.create_sheet(title='second') first_sheet['A1'] = "hello" second_sheet['B2'] = "goodbye" link_from = first_sheet['A1'] link_to = second_sheet['B2'].value link_from.hyperlink = link_to wb.save("C:/somepath/workbook.xlsx") 我假设问题在于'link_to'的值; 然而,我不知道需要改变什么,或者我将不得不写什么样的道路。 我正在使用Python 2.7.6和Excel 2013。

如何使用openpyxl在python中写入新的单元格

我写了代码打开一个excel文件,遍历每一行,并将值传递给另一个函数。 import openpyxl wb = load_workbook(filename='C:\Users\xxxxx') for ws in wb.worksheets: for row in ws.rows: print row x1=ucr(row[0].value) row[1].value=x1 # i am having error at this point 当我尝试运行该文件时出现以下错误。 TypeError: IndexError: tuple index out of range 我可以将返回值x1写入row[1]列吗? 是否有可能写入Excel(即使用row[1] ),而不是访问单个单元格,如ws.['c1']=x1

将Unicodestring写入Excel 2007

我正在使用pyodbc连接到MS SQL服务器。 此外,我正在尝试使用openpyxl写入Excel 2007/10 .xlsx文件。 这是我的代码(Python 2.7): import pyodbc from openpyxl import Workbook cnxn = pyodbc.connect(host = 'xxx',database='yyy',user='zzz',password='ppp') cursor = cnxn.cursor() sql = "SELECT TOP 10 [customer clientcode] AS Customer, \ [customer dchl] AS DChl, \ [customer name] AS Name, \ … [name3] AS [name 3] \ FROM mydb \ WHERE [customer dchl] = '03' […]

如何迭代工作簿中的工作表,openpyxl

我一直在使用openpyxl模块来处理一些.xlsx文件。 我一直在试图找出如何遍历工作簿中的工作表。 我不确定我能否弄清楚。 我已经尝试了下面的两个代码都返回空结果。 我的.xlsx文件有大约20张,所以应该返回。 我无法在互联网上find的一件事是如何将工作簿设置为实际的工作簿。 通常我正在写一个工作簿,所以我只是通过设置一个variables来初始化它为空的工作簿workbook = Workbook()但是在这种情况下,我不确定是否可以通过执行workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")打开一个工作workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx") 如果任何人都可以确定是什么,我做错了,我将不胜感激。 这是我的代码: workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx") for sheet in workbook.worksheets: print sheet # or for sheet in workbook.worksheets: print sheet.title

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

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

在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 […]

查看openpyxl中的行值

在python的csv模块中,有一个叫做csv.reader的函数,它允许你迭代一行,返回一个读者对象,并且可以像列表一样容纳在一个容器中。 所以当列表分配给一个variables并被打印时,即: csv_rows = list(csv.reader(csvfile, delimiter=',', quotechar='|')) print (csv_rows) > > > [['First Name', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'] # I gave an example of the function outputting a header row 到目前为止,我没有在openpyxl中看到类似的function。 我可能会弄错,所以我想知道你们有没有人能帮我一把。 更新 @alecxe,你的解决scheme完美的作品(除了把我的出生date作为一个date时间格式,而不是一个普通的string)。 def iter_rows(ws): for row in ws.iter_rows(): yield [cell.value for cell in row] > > >>> pprint(list(iter_rows(ws))) [['First Nam', […]