Tag: openpyxl

Python脚本错误地删除了.xlsx文件中创build的图表

我试图用Python编写一个脚本,它从存储在文件夹层次结构中的所有.csv文件中获取一些特定的值。 这些值被复制到已创build的目标文件(.xlsx)中的某些特定单元格中。 目标文件还有一些现有的空白图表(在单独的工作表中),这些图表将用脚本提供的值填充。 不幸的是,在我运行这个脚本之后,尽pipe它能正常工作,并且我已经在单元格中复制了所需的值,出于某种原因,图表消失了。 我还没有设法理解为什么,给我的事实,我没有任何暗示在我的脚本中操纵图表的工作。 看到我找不到解决这个问题的办法,我得出的结论是,我应该使用我所拥有的价值观来实现我脚本中的图表。 不过,我想知道你是否知道为什么会发生这种情况。 以下是我的代码。 我不得不提到我是Python新手。 任何关于这个问题或关于更好的代码写作的build议将不胜感激。 # -*- coding: utf-8 -*- import os import glob import csv import openpyxl from openpyxl import load_workbook #getting the paths def get_filepaths(directory): file_paths = [] # array that will contain the path for each file # going through the folder hierarchy for root, directories, files […]

使用Pyxl将Excel电子表格数据读取到某一行

我使用Pandas和xlsxwriter创build了一个Excel电子表格,其中所有的数据都在正确的行和列中。 但是,xlsxwriter中的格式是非常基本的,所以我想通过使用Pyxl在模板电子表格上编写Pandas电子表格来解决这个问题。 首先,我需要让Pyxl只将数据导入到第一个空白行,然后摆脱列标题。 这样我可以将我的Excel数据从xlsxwriter输出写入模板。 我不知道如何去做这件事,不能在这里或在文档中find它。 有任何想法吗? 如果我想在第一个空白列之后读取第一列的数据,那么怎么办? (我可以想出一个解决方法,但是如果我知道的话会有所帮助)

使用openpyxl识别外部的worbook链接

我试图确定所有包含外部工作簿引用的单元格,在Python 3.4中使用openpyxl。 但是我失败了。 我的第一次尝试包括: def find_external_value(cell): # identifies an external link in a given cell if '.xls' in cell.value: has_external_reference = True return has_external_value 但是,当我将具有外部值的单元格值打印到控制台时,会产生以下结果: =[1]Sheet1!$B$4 =[2]Sheet1!$B$4 所以,openpyxl显然不以我想象的方式parsing包含外部值的公式,因为方括号用于表公式,所以尝试以这种方式来获取外部链接是没有意义的。 我挖了一点深,发现openpyxl.workbook.names.external模块( reference )中的detect_external_links函数。 我不知道是否可以调用这个函数来做我想做的事情。 从控制台结果看来,似乎openpyxl理解有引用,并似乎包含在一个sorting列表中。 但是可以访问这个列表吗? 或者检测这个列表是否存在? 无论哪种方式 – 我所需要的是确定一个单元格是否包含指向外部工作簿的链接。 任何和所有的build议将受到欢迎。

如何在Python中testing单元格坐标以更改数据?

我试图用Python来迁移一些数据。 我需要testing看看我是否有特定的列,然后如果单元格值是一个值,改变到特定的其他值。 所以我的问题是,如何做坐标testing。 我正在使用Python和Excel。 我需要读取excel文件,然后对数据进行更改,并输出新的,更改的excel文件。 我正在使用Python和PyCharm,现在尝试使用openpyxl。 我试过xlrd / xlwt,试着用csv做。 从sql到excel文件的数据,然后进行更改 – 这似乎是最简单的方法。 所以比如,在具体的情况下,我在第四栏有性别。 所以我尝试只指定第4列。 旧数据的值为“男性”或“女性”,新数据需要为数字代码,男性为1,女性为2。 for cellObj in row: if cellObj.coordinate == [4:row]: if cellObj.value == 'Male': cellObj.value = 1 elif cellObj.value == 'Female': cellObj.value = 2 (对不起,我试图把问题的格式化,但代码不一样。) 这个代码是不正确的。 我不明白如何做到这一点。 我有本书“Automate The Boring Stuff With Python by Al Sweigart”。 我一直在寻找论坛和博客,但总是要知道确切的坐标。 这就是为什么我尝试使用特定的第4列,而不是在代码中testing以查看我需要的列。 编辑: 我无法添加到commant。 这里是所有的代码。 现在只得到1排。 […]

如何在工作表为空白的工作表中的公式中保留Excel引用?

是否有可能在Excel中创build一个具有公式的模板到其他命名的空表,这样对单元格的引用总是保持不变,最终不会像这样? ='Data'!#REF! 我正在使用Python,pandas和openpyxl填充多个命名的工作表与各种pandas数据框。 第一张,第二张和第三张是与其他工作表相关的模板。 为什么这是必需的:如果我有10行的模板中的数据,并写入5行的数据框,其余5现有的行保留。 可能可以在to_excel之前清除目标表单,但我认为这可能会强制链接中断。 我已经看了这个如何保留一个公式的工作表时,删除和replace工作表的引用? 但是要创造另一个间接参照似乎非常繁琐。

如何使用OpenPyXL格式化标题列

我正在尝试以date格式格式化某些列。 我可以使用以下方法成功更改单个单元格的格式: date_style = Style(number_format="M/D/YYYY") ws['E7'].style = date_style 但有没有一种更简单的方法来应用一个毯子格式化除了标题列? 我注意到openpyxl网站上的一些代码,应该这样做,但似乎没有工作。 如下: col = ws.column_dimensions['E'] col.number_format = "M/D/YYYY" 我假设它是否正常工作,它也适用于标题。 编辑:我试过下面的代码来格式化单元格: ws.cell(row=1,column=5).style=date_style 它和上面的ws ['E7']语句的作用相同,但是格式应该允许我在其上运行一个循环。 但是当我执行以下: for i in ws.rows[1:]: ws.cell(row=i,column=5).style = date_style 它返回错误:无法定义的types:tuple()<int()

Openpyxl:似乎无法得到我正在尝试做的语法正确(阅读下一个单元格)

这是我的代码。 我只是试图打开一个电子表格(目前只有第一列中的信息),然后读取第一个单元格,打印信息,然后沿着循环返回到顶部并读取下一个单元格。 我究竟做错了什么? import openpyxl wb = openpyxl.load_workbook('students2.xlsx') ws = wb.active PrintNext = True #Starts my while statement while True : for i in range(1,300): #I think this is where I'm having an issue? for j in range(1,2): StudentID = ws.cell(row=i+1, column=j).value print(StudentID) PrintNext = False #This gets it to move on from my while […]

如何在openpyxl中使用每一行?

我试图设置一个简单的方法来标记我的业务logging通过python程序,我使用模块openpyxl excel表部分,我想知道如何我可以使它每次我使用它使用的程序在Excel表格中的下一行 。 谢谢! from openpyxl import Workbook wb = Workbook() # grab the active worksheet ws = wb.active item = raw_input('Item: ') sold = raw_input('Sold for: ') percentage = raw_input('Percentage (in decimals): ') date = raw_input('Date of Sale: ') customer = raw_input('Customer: ') # Data can be assigned directly to cells ws['B2'] = item […]

使用openpyxlsearch一列中的单元格,然后打印出相关单元格的行

例如,我希望能够通过用户input数据键入我的程序,然后打印与该单元格相关的行。 理想情况下,如果2016年1月8日被input到程序中,那么它将通过列“A”,然后find相关的date。 如果finddate,那么它将打印date,然后打印该行中的相关数据。 这是我目前下面的。 如果找不到直接的答案,任何types的build议都会很好。 编辑:我改变了Xdate。 from openpyxl import * wb = load_workbook('C:/Users/W-_-C/PycharmProjects/IT SAT_data doc.xlsx') ws = wb.get_sheet_by_name('101') date = input("Prompt: ") for row in ws.iter_rows('A{}:A{}'.format(ws.min_row, ws.max_row)): for cell in row: if ws.cell(row=row, column=0).value == date: print(ws.cell.value)

Python – 通过非空白Excel单元循环

非常沮丧的新Python用户在这里。 我有一个代码运行,然后继续做一些其他的事情,现在它不工作。 这是通过.xlsx文件的“J”列中的非空白单元格循环的。 对于包含文本的单元格,它会查看“A”列中的date。 如果A列中的date等于将来7天,则打印出“您将要轮class”。 非常沮丧,因为它一度在工作,我不知道哪里出了问题。 workbook = load_workbook('FRANKLIN.xlsx', data_only=True) ws=workbook.active cell_range = ws['j1':'j100'] #Selecting the slice of interest for row in cell_range: # This is iterating through rows 1-7 for cell in row: # This iterates through the columns(cells) in that row value = cell.value if cell.value: if cell.offset(row=0, column =-9).value.date() == (datetime.now().date() + […]