Python-将Excel工作表转换为文本文件时将数字右对齐

问题描述 投票:1回答:2

我正在使用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文件时,金额列的正确对齐被弄乱了。

另外,这是一个更新的问题,因为我首先想到将浮点数转换为实际数字将解决我的问题。但是,由于这里用户的回答,我发现我的问题如上所述。非常感谢您的帮助!

python excel floating-point formatting xlwt
2个回答
1
投票

一个数字没有特定的十进制数字-毕竟25 = 25.00。这意味着您无法做您想做的事情。

JavaScript中的行为可能是唯一可能的,因为JavaScript会在可能的情况下自动将字符串转换为数字。

[不知道您为什么要这样做,我们无法真正帮助您找到解决方法。


-3
投票

最简单的实现方法是使用

format(float(25), '.2f')

© www.soinside.com 2019 - 2024. All rights reserved.