Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Openpyxl-删除Excel文件中所有工作表的格式_Python_Excel_Openpyxl - Fatal编程技术网

Python Openpyxl-删除Excel文件中所有工作表的格式

Python Openpyxl-删除Excel文件中所有工作表的格式,python,excel,openpyxl,Python,Excel,Openpyxl,我有很多格式怪异的文件,我正在尝试创建一个函数,从xlsx文件中删除任何格式 这里的一些人建议使用“cell.fill=PatternFill(fill\u type=None)”清除给定单元格中的任何格式 path = r'C:\Desktop\Python\Openpyxl\Formatted.xlsx wb = xl.load_workbook(filename = path) def removeFormatting(file): ws = wb[file]

我有很多格式怪异的文件,我正在尝试创建一个函数,从xlsx文件中删除任何格式

这里的一些人建议使用“cell.fill=PatternFill(fill\u type=None)”清除给定单元格中的任何格式

path = r'C:\Desktop\Python\Openpyxl\Formatted.xlsx
wb = xl.load_workbook(filename = path)

def removeFormatting(file):
    ws = wb[file]
    
    for row in ws.iter_rows():
        for cell in row:
            if cell.value is None:
                cell.fill = PatternFill(fill_type=None)

    wb.save(path)

for s in wb.sheetnames:
    removeFormatting(s)
但这不会改变任何事情。如果单元格是空的,但有颜色,那么openpyxl仍然将其视为非空

在这篇文章之后:

ws.max_列和ws.max_行的问题是,它也会计算空白列,因此无法达到此目的。”

@巴斯卡是对的。 当我试图得到max列时,我得到所有工作表的值,与第一个工作表的值相同

col = []    
for sheet in wb.worksheets:
        col.append(sheet.max_column)
因此,即使有不同的图纸尺寸,如果单元格有背景色或任何其他格式,它也会将其视为有效的非空单元格

有人知道如何解决这个问题吗


提前感谢!

此函数从给定工作表中的所有单元格中删除样式(作为
ws
对象传递)。 因此,您可以打开文件,迭代所有工作表,并将此功能应用于每个工作表:

def removeFormatting(ws):
    # ws is not the worksheet name, but the worksheet object
    for row in ws.iter_rows():
        for cell in row:
            cell.style = 'Normal'
如果还想查看有关如何定义和应用命名样式的信息,请查看以下内容:

只需将默认样式分配给每个单元格。@Charlecklark您能澄清一下吗?我认为执行循环会覆盖工作表中的所有单元格。默认样式是什么样的?无论您希望它是什么,但使用命名样式是最快的方法。不要担心单元格是否存在。@Charlecklark我是su对不起,你能给我举个例子吗?@charlectorlak我如何分配默认样式?