PyCall.jl
PyCall.jl copied to clipboard
python-pptx trouble
Installed python-pptx like this
using Conda, PyCall
run(PyCall.python_cmd(`-m pip install python-pptx`))
In this example, the second last line fails, since ERROR: KeyError: key "rgb" not found
.
using PyCall
pptx = pyimport("pptx")
RGBColor = pptx.dml.color.RGBColor
Inches = pptx.util.Inches
prs = pptx.Presentation()
title_slide_layout = get(prs.slide_layouts, 1)
slide = prs.slides.add_slide(title_slide_layout)
shape = slide.shapes.add_table(4, 3, Inches(1), Inches(1), Inches(3), Inches(2))
shape.table.cell(1,1).fill.solid()
isnothing(shape.table.cell(1,1).fill.fore_color.type) # true
shape.table.cell(1,1).fill.fore_color.rgb = RGBColor(255, 0, 0) # ERROR: KeyError: key "rgb" not found
prs.save("debug_rgb_jl.pptx")
For some reason shape.table.cell(1,1).fill.fore_color.type
is nothing
. whereas in the Python version it is 1
. Here is Python version of the above
import pptx
from pptx.dml.color import RGBColor
from pptx.util import Inches
prs = pptx.Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
shape = slide.shapes.add_table(4, 3, Inches(1), Inches(1), Inches(3), Inches(2))
shape.table.cell(1,1).fill.solid()
shape.table.cell(1,1).fill.fore_color.type == 1 # True
shape.table.cell(1,1).fill.fore_color.rgb = RGBColor(255, 0, 0)
prs.save("debug_rgb_py.pptx")
Also, in Julia, typing shape.<TAB>
results in Error: Error in the keymap...
.
Julia v1.2, Conda v1.3.0, PyCall v1.91.2.
This works
using PyCall
pptx = pyimport("pptx")
RGBColor = pptx.dml.color.RGBColor
Inches = pptx.util.Inches
prs = pptx.Presentation()
title_slide_layout = get(prs.slide_layouts, 1)
slide = prs.slides.add_slide(title_slide_layout)
shape = slide.shapes.add_table(4, 3, Inches(1), Inches(1), Inches(3), Inches(2))
shape.table.cell(1,1).fill.solid()
py"""
$shape.table.cell(1,1).fill.fore_color.rgb = $RGBColor(255, 0, 0)
"""
prs.save("debug_rgb_jl.pptx")
Similar problem with openpyxl where some part of the code has to be wrapped inside py""" ... """
in https://discourse.julialang.org/t/julia-using-openpyxl-to-change-column-width-row-height/45172/5 .