Python 2.7 Python2.7XLSXWriter是';t使用valign正确格式化数据

Python 2.7 Python2.7XLSXWriter是';t使用valign正确格式化数据,python-2.7,xlsxwriter,Python 2.7,Xlsxwriter,我将水平对齐和垂直对齐设置为居中,但只有前两列将数据居中 第三列显示为使用“顶部”垂直对齐设置数据: #!/usr/bin/env python import xlsxwriter # Create our spreadsheet. workbook = xlsxwriter.Workbook('stats.xlsx') worksheet = [] # Open our data file to extract data. data = open('server_results','r'

我将水平对齐和垂直对齐设置为居中,但只有前两列将数据居中

第三列显示为使用“顶部”垂直对齐设置数据:

#!/usr/bin/env python

import xlsxwriter

# Create our spreadsheet.
workbook = xlsxwriter.Workbook('stats.xlsx')
worksheet = []

# Open our data file to extract data.
data = open('server_results','r')

# Create a bold centered font for our column headers.
format = workbook.add_format()
format.set_bold()
format.set_align('center')
format.set_align('vcenter')
format.set_text_wrap()

# Non-headers will be centered.
format1 = workbook.add_format()
format1.set_align('center')
format1.set_align('vcenter')
format1.set_text_wrap()

# Provider label/name for worksheet.
worksheet.append(workbook.add_worksheet('Stats'))

# Adjust column widths for data.
worksheet[0].set_column(0,2,25)
#worksheet[0].set_column(1,1,25)
#worksheet[0].set_column(1,2,25)
#worksheet[0].set_row(0,40)

# Start from the first cell. Rows and columns are zero indexed.
worksheet[0].write('A1', 'Column 1', format)
worksheet[0].write('B1', 'Column 2', format)
worksheet[0].write('C1', 'Column 3', format)

row = 1
col = 0

# Count lines
linelist = data.readlines()
count = len(linelist)

# Populate spreadsheet.
for num in range (0, count):
    line = linelist[num]
    splitline = line.split("\t")
    worksheet[0].write(row, col, splitline[0], format1)
    worksheet[0].write(row, col + 1, splitline[1], format1)
    worksheet[0].write(row, col + 2, splitline[2], format1)
    row += 1

#close workbook
workbook.close()
EOF
我已尝试使用以下代码修改数据格式:

format = workbook.add_format({'bold': True, 'bg_color': 'yellow', 'border': 5, 'align': 'center', 'valign': 'middle', 'text_wrap': True})
但是当我这样做的时候,没有一列是居中的——使用这种格式,前两列是底部对齐的,第三列是顶部对齐的

第三列显示为使用“顶部”垂直对齐设置数据

我使用一些示例数据运行了您的程序版本,但我没有看到这种行为:

import xlsxwriter

# Create our spreadsheet.
workbook = xlsxwriter.Workbook('stats.xlsx')
worksheet = []

# Create a bold centered font for our column headers.
format = workbook.add_format()
format.set_bold()
format.set_align('center')
format.set_align('vcenter')
format.set_text_wrap()

# Non-headers will be centered.
format1 = workbook.add_format()
format1.set_align('center')
format1.set_align('vcenter')
format1.set_text_wrap()

# Provider label/name for worksheet.
worksheet.append(workbook.add_worksheet('Stats'))

# Adjust column widths for data.
worksheet[0].set_column(0,2,25)

# Start from the first cell. Rows and columns are zero indexed.
worksheet[0].write('A1', 'Column 1', format)
worksheet[0].write('B1', 'Column 2', format)
worksheet[0].write('C1', 'Column 3', format)

row = 1
col = 0

# Count lines
linelist = ['foo\tbar\tbaz\tbing'] * 5
count = len(linelist)

# Populate spreadsheet.
for num in range (0, count):
    line = linelist[num]
    splitline = line.split("\t")
    worksheet[0].write(row, col, splitline[0], format1)
    worksheet[0].write(row, col + 1, splitline[1], format1)
    worksheet[0].write(row, col + 2, splitline[2], format1)
    row += 1

#close workbook
workbook.close()
输出显示预期的水平和垂直居中:

您能否通过以下方式澄清问题所在。

splitline = [l.rstrip() for l in line.split("\t")]

解决了问题。

我必须从数据文件中的行末尾删除一个换行符,这就是问题的原因。“splitline=[l.rstrip(),用于line.split(“\t”)]”是修复方法。