我正在使用python创建一个Excel表格,稍后将其转换为文本文件。我对宽度和对齐方式有特殊要求。如果稍有改动,Ellucian(一种软件)将无法读取它。现在,我正在努力使amount列的列右对齐:D。我用xlwt右对齐。直到我将其转换为.prn文件,然后再次将其左对齐后,它似乎可以正常工作。
查找以下代码:
import pandas as pd
import xlwt
df = pd.read_excel("tms_report.xls", "Disbursement Detail Report")
workbook = xlwt.Workbook(encoding="ascii")
worksheet = workbook.add_sheet("Sheet", cell_overwrite_ok = False)
#Varibales: Width of the column, alignement
right_align = xlwt.easyxf("align: vert centre, horiz right")
def adjustement(data):
x = len(data)
del data[x - 1]
return data
arrStudentID = adjustement(df['Student ID'])
arrStudentFirst = adjustement(df['Student First Name'])
arrStudentLast = adjustement(df['Student Last Name'])
arrAmount = adjustement(df['Payment Amount'])
worksheet.col(0).width = 256*10
worksheet.col(1).width = 256*17
worksheet.col(2).width = 256*18
worksheet.col(3).width = 256*8
i = 0
for studentID in arrStudentID:
if len(studentID) < 7:
studentID = "0" + studentID
while len(studentID) >= 8:
studentID = studentID[1:]
worksheet.write(i, 0, studentID)
i+=1
i = 0
for studentFirst in arrStudentFirst:
worksheet.write(i, 1, studentFirst)
i+=1
i = 0
for studentLast in arrStudentLast:
worksheet.write(i, 2, studentLast)
i+=1
#This is the part that I need to be a number or right aligned
i = 0
for amount in arrAmount:
amount = '%.2f'%amount
worksheet.write(i, 3, amount, right_align)
i += 1
workbook.save("tms_import.xls")
我收到的excel文件看起来很像我想要的。但是,当我将其另存为.prn文件时,金额列的正确对齐被弄乱了。
另外,这是一个更新的问题,因为我首先想到将浮点数转换为实际数字将解决我的问题。但是,由于这里用户的回答,我发现我的问题如上所述。非常感谢您的帮助!
一个数字没有特定的十进制数字-毕竟25 = 25.00。这意味着您无法做您想做的事情。
JavaScript中的行为可能是唯一可能的,因为JavaScript会在可能的情况下自动将字符串转换为数字。
[不知道您为什么要这样做,我们无法真正帮助您找到解决方法。
最简单的实现方法是使用
format(float(25), '.2f')