Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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将数字为1的单元格格式化为负数,并显示所有哈希标记_Python_Excel_Openpyxl - Fatal编程技术网

Python Openpyxl将数字为1的单元格格式化为负数,并显示所有哈希标记

Python Openpyxl将数字为1的单元格格式化为负数,并显示所有哈希标记,python,excel,openpyxl,Python,Excel,Openpyxl,这是一个非常独特的问题,所以我希望你们中的一些人能帮助我解决这个问题 这是一个多部分的问题,第一个问题是,处理excel操作的原始代码错误地将某些列格式化为日期列,这不是我在这里试图解决的问题,但对于backstory可能很重要。它似乎正在格式化历元时间的列,因此列中的数字1将显示为1900左右。对于这个问题的其余部分,我们假设这个不正确的日期格式是可以的,稍后我将在excel上手动更改格式 我更突出的问题如下:;openpyxl或我的代码错误似乎将包含数字1的单元格设置为-5。这看起来像下图,

这是一个非常独特的问题,所以我希望你们中的一些人能帮助我解决这个问题

这是一个多部分的问题,第一个问题是,处理excel操作的原始代码错误地将某些列格式化为日期列,这不是我在这里试图解决的问题,但对于backstory可能很重要。它似乎正在格式化历元时间的列,因此列中的数字1将显示为1900左右。对于这个问题的其余部分,我们假设这个不正确的日期格式是可以的,稍后我将在excel上手动更改格式

我更突出的问题如下:;openpyxl或我的代码错误似乎将包含数字1的单元格设置为-5。这看起来像下图,所有的标签单元格都应该有1个在里面

任何设置为日期的格式都是完全正确的,只要我将列格式更改为数字,就会立即更改为它们的实际数字。带有hashtags的将更改为-5,或一些负数,如下所示

我尝试手动遍历所有单元格,并使用以下代码修复它

import datetime
from openpyxl import load_workbook, worksheet

date_string = datetime.date.today().strftime("%Y%B%d")
name_string = 'REDACTED'
wb = load_workbook(filename = name_string)
ws = wb.get_sheet_by_name(name = 'vInfo')
for row in ws.iter_rows():
    for cell in row:
        if (str(cell.value) == "-5"): # Or whatever the number was displaying on the sheet at the t ime)
            print(cell.value)
            cell.number_format = '0'
            cell.value = int(1)

wb.save(name_string)
print("saved at "+name_string)
当我运行这个时,没有任何变化,看起来像是cell.value实际上不是负数,似乎是某种错误?此外,每次保存工作簿时,负数将减少1

我无法提供在NDA下生成excel文件的初始代码,但我希望我已经解释得足够多,让您了解我面临的问题

我完全不知所措,我真的希望有人能指出哪里出了问题,我非常感谢你抽出时间

Microsoft Excel表示,负数或太大的日期将显示为

例如,我在单元格中输入了负数-2

您可以将单元格格式更改为文本以显示负数

from openpyxl.styles import numbers
cell.number_format = numbers.FORMAT_TEXT
或者你的代码

cell.number_format = '@'
cell.value = "1"

您只需单击单元格中的换行符,即可查看单元格中的实际内容这是Excel中一个长期存在的错误:它可以显示1900年之前的日期。这只是为什么不应该真正依赖Excel来处理日期时间的众多原因之一。@VigneshRajendran我已经这样做了,而且它似乎显示了一个负数,每次保存工作簿时它都会增加。@Charlichtlark有没有办法通过编程防止这种情况发生?修复Excel中的一个错误?这取决于微软的程序员。