Tag: openpyxl

openpyxl python – 将csv写入excel给'数字格式化为文本'

我写了一个代码,通过openpyxl将一个.csv文件(包含数字)导入到一个excel文件中。 它可以工作,但是,所有的单元格都将文本编号写入excel文件。 然后,我必须手动更正Excel中的错误:“数字格式化为文本(在单元格的angular落显示less许绿色三angular形)。 有没有办法来防止这种情况发生? 它发生在任何csv文件,即使我只用数字。 谢谢 #!python2 # Add csv file to an xlsx import os, csv, sys, openpyxl from openpyxl import load_workbook from openpyxl import Workbook from openpyxl.cell import get_column_letter #Open an xlsx for reading wb = load_workbook('Test.xlsx') ws = wb.get_sheet_by_name("RUN") dest_filename = "Test_NEW.xlsx" csv_filename = "csvfile.csv" #Copy in csv f = open(csv_filename) reader […]

如何使用openpyxl同时在一个工作簿中写入两个工作表

我必须创build和写约5个工作表的新的Excel工作簿。 我的代码的目的是读取数据库,并根据一定的标准拆分成不同的工作表。 我已经在python 2.7中使用了下面的代码,使用openpyxl-1.1.0 from openpyxl.workbook import Workbook dest_filename = 'D:\\Splitted.xlsx' wb = Workbook() ws1 = wb.worksheets[0] ws1.title = 'Criterion1' ws2 = wb.worksheets[1] ws2.title = 'Criterion2' ## Read Database, get criterion if criterion == Criterion1: ws1.cell('A1').value = 'A1' ws1.cell('B1').value = 'B1' elif criterion == Criterion2: ws2.cell('A1').value = 'A2' ws2.cell('B1').value = 'B2' wb.save(filename = dest_filename) 我能够写单张,但如果我尝试创build第二个工作表,我得到一个错误,说:“索引超出范围”在代码ws2 […]

openpyxl – 使用列表填充列

所以我一直试图使用openpyxl和我的Python 3.5项目来生成一个excel文件,其顶部行(B1到M1)是月份,列(A2到列表的长度)是来自列表中的项目。 现在我可以得到最好的一排工作正常使用这个: for row in ws1.iter_rows('B1:M1'): counter=0 for cell in row: cell.value = months[counter] counter=counter+1 不过,我不能使用相同的方法来填充列。 我努力了: for row in range(2, 1 + len(firstNameList)): test=0 for col in range(1, 2): test2 = firstNameList[test] ws1.cell(column=col, row=row, value=test2) test = test + 1 但是,这并不是从我的列表中拉出所有项目,而是只是一次又一次地拉第一个项目。 称为testing的计数器由于某种原因未被增加。 我也尝试使用ws1.iter_rows('A2:A15'),但这也只是从我的列表(firstNameList)拉第一个项目。 我很新,使用openpyxl,并会感谢任何帮助。 谢谢!

将pandas.DataFrame添加到现有的Excel文件

我有一个网站刮板,为本月的刮伤创build一个excel文件。 我想在每次运行的时候,把当天的刮刮器和每一个刮刮器都添加到这个文件中作为新的纸张。 然而,我的问题是,它只是用新的工作表覆盖现有工作表,而不是将其作为单独的新工作表添加。 我试着用xlrd,xlwt,pandas和openpyxl来做。 还是崭新的Python,所以简单的赞赏! 下面是处理写入excel文件的代码。 # My relevant time variables ts = time.time() date_time = datetime.datetime.fromtimestamp(ts).strftime('%y-%m-%d %H_%M_%S') HourMinuteSecond = datetime.datetime.fromtimestamp(ts).strftime('%H_%M_%S') month = datetime.datetime.now().strftime('%m-%y') # Creates a writer for this month and year writer = pd.ExcelWriter( 'C:\\Users\\G\\Desktop\\KickstarterLinks(%s).xlsx' % (month), engine='xlsxwriter') # Creates dataframe from my data, d df = pd.DataFrame(d) # Writes to the excel […]

如何使用python将列添加到现有的excel文件?

这里是我的代码: import openpyxl, pprint wb = openpyxl.load_workbook('/Users/sarahporgess/Desktop/SSA1.xlsx') sheet = wb.get_sheet_by_name('Sheet1') data = {} for row in range(1,sheet.max_row+1): date = sheet['A' +str(row)].value gamma = sheet['B' +str(row)].value theta = sheet['C' +str(row)].value ratio = float(gamma)/float(theta) resultFile = open('SSA2.csv' , 'w') resultFile.write( pprint.pformat(date)) resultFile.write( pprint.pformat(gamma)) resultFile.write( pprint.pformat(theta)) resultFile.write( pprint.pformat(ratio)) print(ratio) sheet['D1']=ratio resultFile.close() print('Done.') 我现有的excel文件目前有三栏:“date,伽玛,theta”。 我想添加一个名为“ratio”的第四列,即gamma / theta的比率。 如何使用python添加另一列到现有的Excel文档? 这段代码创build一个excel文档,其中4个元素打印到一个单元格中

openpyxl请不要在导入时假定文本为数字

关于如何阻止Excel将文本解释为数字,或者如何使用openpyxl输出数字格式有许多问题,但是我还没有看到任何解决scheme: 我有一个由别人给我的Excel电子表格,所以我没有创build它。 当我用Excel打开文件时,我有一些像“5E12”(克隆号,如果有人关心的)显示正确显示的值,但每个旁边都有一个绿色的箭头,告诉我“这看起来像一个数字存储为文本“。 Excel然后问我是否想将它转换为数字,如果我看到是,我得到5000000000000,然后自动转换为科学记数法,并再次显示5E12,只有这一次文本输出将显示零的全数。 请注意,在转换之前,这实际上是文本,甚至Excel,我只被警告/提供转换。 所以,当用openpyxl(从openpyxl.reader.excel import load_workbook)读取这个文件时,5E12会自动转换为5000000000000。我假设openpyxl和Excel做了相同的假设,只有转换没有提示或在我的部分input。 我怎样才能防止这种情况发生? 我不希望文本看起来像“存储为文本的数字”转换为数字。 除非我这么说,否则它们是文字。 到目前为止,我find的唯一解决scheme是在每个单元格的前面添加单引号,但这不是一个理想的解决scheme,因为它是手工劳动而不是程序化解决scheme。 此外,解决scheme需要是一般的,因为我不知道这个问题可能发生在哪里(我每天读数百万行,所以我不想手工做任何事情)。 我认为这是一个openpyxl的问题。 有一个从2011年初的谷歌小组讨论提到这个问题,但认为这是非常罕见的问题。 https://groups.google.com/forum/?fromgroups=#!topic/openpyxl-users/HZfpShMp8Tk 那么,有什么build议?

使用openpyxl对列进行sorting

我已经创build了Excel工作表,并将数据写入Excel文件。 我们有使用openpyxlsorting列的function吗? 我无法附上Excel表单并放置一行Excel表单: 0 -269.9 99.97 0 -25.58 0 0.0006901 -269.9 127 0 26.23 0 810 -269.9

使用openpyxl对Excel进行sorting和自动过滤

我正在尝试使用openpyxl和Python对电子表格进行sorting。 我已阅读文件,我不太明白这个网页。 我期待它添加自动筛选器下拉箭头或sorting我的电子表格,它是返回错误。 这是我的代码 wb = openpyxl.load_workbook('report.xlsx') ws = wb.active ws['A2'] = "Store" ws['B2'] = "Manager" ws['C2'] = "Zone" ws.column_dimensions.group('F','DU',hidden=True) #ws.AutoFilter.add_sort_condition('C:C') wb.save("report.xlsx") 根据文件,它看起来像“ws.AutoFilter.add_sort_condition('C:C')”应该给我我想要的结果。 (是的,我知道它现在是注释行,其余的代码运行良好,所以我评论它)。 当我在代码中有这样的行时,我得到的错误 – “工作表”对象没有属性“自动filter”,但根据文件,它看起来像它。 http://openpyxl.readthedocs.org/en/latest/_modules/openpyxl/worksheet/filters.html#AutoFilter 。 如果有人能帮我解释一下为什么这个失败,或者这些文件意味着什么会很好。 文件中的这个陈述对我来说尤其困惑: “不要自己创build自动filter,它是通过以下方法创build的:class: ~openpyxl.worksheet.Worksheet 。您可以使用via:attr: ~~openpyxl.worksheet.Worksheet.auto_filter属性。 因为我也试过了,也失败了。 更新:@ crussell的回复工作,它将自动filter添加到我的电子表格。 但是,它仍然没有将sorting条件添加到适当的列。

有没有什么方法可以使用openpyxl获取.xlsx表单中的行数和列数?

有没有什么方法可以使用openpyxl获取.xlsx表单中的行数和列数? 在xlrd中, sheet.ncols sheet.nrows 会给列和行数。 在openpyxl中有没有这样的方法?

Python修改已有文件时,openpyxl会丢失超链接

奇怪的是,当加载一个已经存在的excel与openpyxl并再次保存时,文件中的超链接就消失了。 无论是openpyxl 1.7.2或最新的1.8.5都有这个问题。 任何人都可以帮助解决这个问题 还是比openpyxl有更好的select? 我知道xlrd / xlwt和XlsxWriter,但是xlwt不支持.xlsx文件,并且XlsxWriter不能读取已存在的文件。 我需要在应用程序中多次修改文件。 [更新]:看这里 。 看来这是错误尚未解决? 以下代码可能对您的testing有帮助。 #-*- coding: utf-8 -*- import openpyxl def create(): wb = openpyxl.Workbook() ws = wb.worksheets[0] ws.cell('A1').value = 'Click Me' ws.cell('A1').hyperlink = 'http://www.google.com' wb.save('test1.xlsx') def rewrite(): wb = openpyxl.load_workbook('test1.xlsx') ws = wb.worksheets[0] wb.save('test2.xlsx') if __name__ == '__main__': create() rewrite() [2017-03-07已更新]: 错误已修复,问题不再存在。