Обновление: Итак, я просто вернулся к Excel: преобразовал столбец D (сумма) в число, а затем перешел к форматированию ячеек и вручную выбрал 2 десятичных знака, и все заработало нормально, текстовая версия выглядела идеально выровненной. . Однако мой вопрос заключается в том, как я могу автоматически сохранить столбец, чтобы преобразовать его содержимое в число с двумя десятичными знаками. Я знаю, что возвращаюсь к своему первому вопросу, но я считаю, что это самый близкий вопрос к моей проблеме, который я могу придумать.
Я использую python для создания листа Excel, который позже конвертирую в текстовый файл. У меня есть особые требования к ширине и выравниванию. Если он немного изменен, Ellucian (программное обеспечение) не сможет его прочитать. На данный момент я изо всех сил пытаюсь выровнять по правому краю столбец столбца amount: D . Я использовал xlwt для выравнивания по правому краю. Казалось, это работает, пока я не преобразовал его в файл .prn, а затем снова выровнял его по левому краю.
Find the code below:
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, правильное выравнивание столбца количества испорчено.
Кроме того, это обновленный вопрос, так как я сначала подумал, что преобразование числа с плавающей запятой в фактическое число решит мой вопрос. Но благодаря ответам пользователей здесь я понял, что моя проблема такая же, как указано выше. Я действительно ценю вашу помощь!!
toFixed
в JavaScript также создает строки. - person Stefan Pochmann   schedule 07.01.2020.pm
? Это может помочь, если вы покажете небольшой пример файла.pm
в своем вопросе. Я подозреваю, что для решения вашей проблемы может потребоваться написать собственное решение на python. Но для этого необходимо знать точный формат файла.pm
. - person ekhumoro   schedule 07.01.2020