openpyxl:问题读取$和。来自xlsx

时间:2016-01-08 15:13:48

标签: python excel ubuntu-14.04 openpyxl

我想使用python将xlsx文件转换为TAB分隔的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 转换为 2000 0.00 转换为 0

知道为什么吗?

1 个答案:

答案 0 :(得分:2)

这是因为在Excel中将单元格的格式设置为例如货币格式,因此值2000显示为$ 2000.00,您不会更改单元格中的值,并且openpyxl正在读取单元格中的值,而不是其格式化/显示的表示。如果您在单元格中键入了字符串&$ 39; $ 2000.00那么openpyxl会看到什么。类似地,对于显示两个小数位的显示格式,因此0显示为0.00,单元格中的仍为0,因此openpyxl看到的是什么。

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