2016-10-20 2 views
0

Я пытаюсь использовать openpyxl для работы с Excel Data.Drawing изображения и экспорта их в порядке. Но x_axis недостаточно хорош, я хочу повернуть это но не нашли решения в документе.Поворот оси диаграммы excel с помощью openpyxl

Решение проблемы с использованием XlsxWriter: solution.

Мой код-то вроде этого:

from openpyxl import load_workbook 
from openpyxl.chart import (
    ScatterChart, 
    LineChart, 
    Reference, 
    Series, 
    shapes, 
    text, 
    axis) 
wb = load_workbook('text.xlsx') 
ws = wb.active 
c5 = ScatterChart() 
x = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row) 
for i in range(3,5): 
    values = Reference(ws, min_col=i, min_row=1, max_row=ws.max_row) 
series = Series(values, xvalues=x, title_from_data=True) 
# series.marker.symbol = 'triangle' 
c5.series.append(series) 
c5.x_axis.number_format='yyyy/mm/dd' 
c5.x_axis.title = 'Date' 

Спасибо всем!

Мой Python версии 3.5.2 и openpyxl является 2.4.0

---------------- newcode вращаться, но сделать файл, разбитый и необходимость отремонтировать

------------- код в XML Excel

<valAx> 
      some codes here 
    <txPr> 
     <a:bodyPr rot="-1350000" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"/> 

    </txPr> 
    <crossAx val="20"/> 
</valAx> 

коды выше разбивает файл, пока я не добавить их в этом

<txPr> 
    <a:bodyPr rot="-1350000" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"/> 
    <a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> 
     <a:pPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> 
      <a:defRPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"/> 
     </a:pPr> 
     <a:endParaRPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" lang="zh-CN"/> 
    </a:p> 
</txPr> 
+0

Решение в openpyxl аналогично решению Visual Basic. Вам нужно будет более внимательно изучить спецификацию OOXML. –

+0

Мне так жаль, что я новичок в VBA и openpyxl. Вы имеете в виду COM в Excel? Я проверил объекты в редакторе VBA Excel и не нашел никакой помощи. Пожалуйста, дайте мне более подробную информацию? Большое спасибо – oldhumble

+0

Я, наконец, распаковал свой файл xlsx и нашел что-то, что представляет угол. Но я не уверен, потому что после того, как я закончил, файл покажется сломанным каким-то образом. @CharlieClark, новые коды находятся в основном корпусе – oldhumble

ответ

2

Благодаря @Charlie Кларк я, наконец, получить ответ суммирующий коды ниже:

from openpyxl.chart.text import RichText 
from openpyxl.drawing.text import RichTextProperties,Paragraph,ParagraphProperties, CharacterProperties 
c5.x_axis.txPr = RichText(bodyPr=RichTextProperties(anchor="ctr",anchorCtr="1",rot="-2700000", 
      spcFirstLastPara="1",vertOverflow="ellipsis",wrap="square"), 
     p=[Paragraph(pPr=ParagraphProperties(defRPr=CharacterProperties()), endParaRPr=CharacterProperties())]) 

Это немного сложно, но можно почерпнуть из документации openpyxl

txPr набирается RichText , и он состоит из (bodyPr и p), bodyPr определяет его свойства, p является последовательностью и решает, будет ли показана ось или нет.

он может вращать x_axis диаграммы -45 градусов.

Смежные вопросы