2016-09-23 6 views
3

저는 xlsxwriter을 사용하여 차트를 생성합니다. 나는 범주 축을 위해 텍스트를 사용하려고하는데, 거의 모든 Excel 버전 (2007, 2010)에서 작동합니다. 하지만 엑셀 2013에서가 아니라 Microsoft Excel Online에서는 그렇지 않습니다 (2013 년과 비슷한 것처럼 보입니다).python xlsxwriter - Excel 2013의 세로 막 대형 차트에서 카테고리 축이 잘못되었습니다.

문제 : 범주 축은 셀의 실제 텍스트 대신 시퀀스 번호 (1,2,3 ..)로 표시됩니다. 이것은 내 코드의 관련 부분으로 data (2 크기의 튜플 목록)을 작성하고 해당 데이터를 기반으로하는 세로 막 대형 차트를 삽입합니다.

xlsxwriter.Workbook('a.xlsx', {'default_date_format': 'dd/mm/yyyy'}) 
    sheet = workbook.add_worksheet(sheet_name) 
    sheet.write_row(0, 0, headers) # Write header row 
    sheet.set_column(0, 1, 25) # Column width 
    rowCount = 1 

    # Write the data 
    for text, total in data: 
     sheet.write_row(rowCount, 0, (text, total)) 
     rowCount += 1 

    column_chart = workbook.add_chart({'type': 'column'}) 
    column_chart.set_size({'width': 850, 'height': 600}) 

    column_chart.set_x_axis({'text_axis': True}) 
    column_chart.add_series({ 
     'name': sheet_name, 
     'categories': [sheet_name, 1, 0, rowCount, 0], # row, col row, col 
     'values': [sheet_name, 1, 1, rowCount, 1], 
     'data_labels': {'value': True} 
    }) 
    sheet.insert_chart('D10', column_chart) 
    workbook.close() 

I가 상기 한 바와 같이, 모든 작동 코드 출력이 좋은 XLSX 범주 축은 시트 (1,2,3 ...)의 라인 번호를 나타낸다 외에 엑셀 2013 대신 텍스트 값은 categories 옵션에서 차트에 할당됩니다. XlsxWriter 출력이 Excel 2007에서 일하는 것이 아니라 엑셀 2013에서 파일 형식이 기본 2007 파일 형식 및 Excel 이전 버전과의 호환성에 아주 좋은 것을 어떤 이유가 아닌 사전

답변

2

에서

감사합니다.

또한 사용자가 설명하는 문제가 표시되지 않습니다. 나는 몇 가지 예제 입력 데이터를 추가하기 위해 변형 예 :

import xlsxwriter 

workbook = xlsxwriter.Workbook('a.xlsx', 
           {'default_date_format': 'dd/mm/yyyy'}) 

sheet_name = 'Data' 

sheet = workbook.add_worksheet(sheet_name) 
sheet.set_column(0, 1, 25) 
rowCount = 1 

data = [ 
    ['Foo', 4], 
    ['Bar', 5], 
    ['Baz', 6], 
] 

# Write the data 
for text, total in data: 
    sheet.write_row(rowCount, 0, (text, total)) 
    rowCount += 1 

column_chart = workbook.add_chart({'type': 'column'}) 
column_chart.set_size({'width': 850, 'height': 600}) 

column_chart.set_x_axis({'text_axis': True}) 
column_chart.add_series({ 
    'name': sheet_name, 
    'categories': [sheet_name, 1, 0, rowCount, 0], # row, col row, col 
    'values': [sheet_name, 1, 1, rowCount, 1], 
    'data_labels': {'value': True} 
}) 
sheet.insert_chart('D10', column_chart) 
workbook.close() 

을 그리고 출력은 엑셀 2013에서 제대로 표시 :

enter image description here

+0

이것은 실제로 제가 예상했던 것입니다. 문제는 Foo, bar, baz 대신 1,2,3을 보았습니다. 누구든지이 문제가 발생하면 - 라이브러리를 업그레이드하십시오. – user3599803

+0

일반적으로 [모듈 업그레이드] (https://xlsxwriter.readthedocs.io/bugs.html#reporting-bugs)는 XlsxWriter의 모든 문제를 디버깅하는 첫 번째 단계입니다 . – jmcnamara

-1

문제는 실제로 도서관의 내 버전을 업그레이드하여 해결했다. 내 버전은 0.5.1이었고 현재 0.9입니다. 이전 버전의 버그인지 궁금합니다. 이제는 잘 작동합니다. 나도 알아낼 시간이 너무 많았습니다.