Обновление: Так что я просто вернулся к Excel: преобразовал столбец D (количество) в число, а затем перешел к форматированию ячеек и вручную выбрал 2 десятичных знака, и все заработало, текстовая версия выглядела идеально выровнен. Однако мой вопрос заключается в том, как автоматически сохранить столбец, чтобы преобразовать его содержимое в число с двумя десятичными знаками. Я знаю, что возвращаюсь к своему первому вопросу, но я думаю, что это самый близкий вопрос к моей проблеме, о котором я только могу подумать.
Я использую python, чтобы создать лист Excel, который я позже преобразовал бы в текст файл. У меня есть конкретные c требования к ширине и выравниванию. Если оно немного изменилось, Ellucian (программное обеспечение) не сможет его прочитать. Сейчас я пытаюсь выровнять столбец сумма столбец по правому краю: 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, правильное выравнивание столбца суммы нарушается.
Кроме того, это обновленный вопрос, поскольку я сначала подумал, что преобразование числа с плавающей точкой в действительное число решит проблему. мой вопрос. Но благодаря ответам пользователей здесь я понял, что моя проблема, как указано выше. Я действительно ценю вашу помощь !!