openpyxl:发布阅读 $ 和 .来自 xlsx

openpyxl: Issue reading $ and . from xlsx

我想使用 python 将 xlsx 文件转换为制表符分隔的 csv。阅读后我被指向名为 openpyxl 的库(代码如下)

def importXLSX(fileName):
        temp = os.path.basename(fileName).split('.xlsx')
        tempFileName = os.path.dirname(os.path.abspath(fileName))+"/TEMP_"+temp[0]+".csv"
        tempFile = open(tempFileName,'w')
        wb = load_workbook(filename=fileName)
        ws = wb.worksheets[0] #Get first worksheet
        for row in ws.rows: #Iterate over rows
                for cell in row:
                        cellValue = "" 
                        if cell.value is not None:
                                cellValue = cell.value
                        tempFile.write(cellValue+'\t')
                tempFile.write('\n')
        os.remove(fileName)
        return tempFileName

我的输入文件包含账单数据,但此函数正在将 $2,000 转换为 20000.000

知道为什么吗?

这是因为在 Excel 中,当您将单元格的格式设置为例如货币格式,因此值 2000 显示为 $2000.00,您没有更改单元格中的值,openpyxl 正在读取单元格中的值,而不是它的 formatted/displayed 表示。如果您在单元格中键入了字符串 '$2000.00,那么这就是 openpyxl 会看到的内容。同样对于显示两位小数的显示格式,所以0显示为0.00,单元格中的仍然是0,所以这就是openpyxl看到的。

SO 还有其他关于使用 xlrd 库而不是 openpyxl 读取单元格格式的问题:例如,请参阅 How to get Excel cell properties in Python and Identifying Excel Sheet cell color code using XLRD package 和一般 google python excel 读取单元格格式