我想使用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
知道为什么吗?
答案 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 Python和Identifying Excel Sheet cell color code using XLRD package以及一般google python excel读取单元格格式