Page 1 of 1

Generate complex word document

PostPosted: Tue May 02, 2017 10:48 am
by abdelkaderl
Hello everybody,

First, thanks for this great tool.

I am all new with docx4j, and am looking for a solution to generate a complete word document, which contains:

- Graphics/charts (almost all types of graphs)
- editable graphics/charts.
- data tables.
- variables.
- etc...

And I wonder is it possible to do all that with docx4j free version or entreprise edition ?

I have verified all the examples, unfortunately, no documentation that explain the use of graphics in a docx files :(

Please i need an answer to close this subject, if the entrepris edition can do that, im ready to buy it, all what i need is a confirmation.


Thanks a lot for your help.

Re: Generate complex word document

PostPosted: Tue May 02, 2017 3:17 pm
by jason
For complex document generation, have a look at the OpenDoPE stuff in docx4j.

There aren't any extra features of relevance in the Enterprise Edition (except inserting external content chunks)

Regarding charts, you can create chart parts yourself, see objects

Code: Select all
org.docx4j.openpackaging.parts.DrawingML.Chart;
org.docx4j.dml.chart.CTChart;


but there is no high level API in docx4j for doing this.

Do you need PDF output? Be aware that charts aren't supported in some conversion tools.

Another approach is to use a third party graph library:

- JFreeChart (LGPL)
- https://github.com/timmolter/XChart (Apache 2), or
- R, see esp https://github.com/davidgohel/ReporteRs (which creates docx/pptx output, using docx4j)

which can output the chart as a PNG.

Re: Generate complex word document

PostPosted: Tue May 02, 2017 8:18 pm
by abdelkaderl
Hi Jason,

Thanks for your quick answer.

Can you give me more details avout using Parts to create charts / editable charts in docx file ?

Or can i generate charts using xlsx4j then put them into docxfile as (OLE objects) ?

More details about : "but there is no high level API in docx4j for doing this." whats that mean exactly ?

Thanks ;)

Re: Generate complex word document

PostPosted: Tue May 02, 2017 9:39 pm
by jason
> Can you give me more details avout using Parts to create charts / editable charts in docx file ?

If you create a chart in Word (Insert > Chart), you'll get the following docx4j structure (http://webapp.docx4java.org/OnlineDemo/PartsList.html):

Code: Select all
  /word/charts/chart1.xml, part of type org.docx4j.openpackaging.parts.DrawingML.Chart containing JAXB object org.docx4j.dml.chart.CTChartSpace   


Word also embeds:
Code: Select all
        /word/embeddings/Microsoft_Excel_Worksheet1.xlsx   rId1   application/vnd.openxmlformats-officedocument.spreadsheetml.sheet   org.docx4j.openpackaging.parts.WordprocessingML.EmbeddedPackagePart   http://schemas.openxmlformats.org/officeDocument/2006/relationships/package


but you don't need that, if your chart doesn't contain:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  <c:externalData r:id="rId1">
    <c:autoUpdate val="0"/>
  </c:externalData>
 
Parsed in 0.000 seconds, using GeSHi 1.0.8.4


In your document it is anchored by something like:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
        <w:drawing>
          <wp:inline distT="0" distB="0" distL="0" distR="0">
            <wp:extent cx="5486400" cy="3200400"/>
            <wp:effectExtent l="0" t="0" r="19050" b="19050"/>
            <wp:docPr id="1" name="Chart 1"/>
            <wp:cNvGraphicFramePr/>
            <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
              <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
                <c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId5"/>
              </a:graphicData>
            </a:graphic>
          </wp:inline>
        </w:drawing>
 
Parsed in 0.002 seconds, using GeSHi 1.0.8.4


> Or can i generate charts using xlsx4j then put them into docxfile as (OLE objects) ?

See above, create/add a part of type Chart. https://github.com/plutext/docx4j/blob/ ... Chart.java

> More details about : "but there is no high level API in docx4j for doing this." whats that mean exactly ?

It means you have to create the CTChartSpace object yourself (as opposed to the sort of API you see in libraries like https://github.com/timmolter/XChart), though you can use docx4j's codegen to do this from a sample (see below).

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
The XML element at XPath /c:chartSpace[1] is represented as JAXB generated Java object javax.xml.bind.JAXBElement containing org.docx4j.dml.chart.CTChartSpace

Generating this object

Method 1: via ObjectFactory

import java.lang.Integer;
import org.docx4j.dml.chart.CTAxDataSource;
import org.docx4j.dml.chart.CTAxPos;
import org.docx4j.dml.chart.CTBoolean;
import org.docx4j.dml.chart.CTCatAx;
import org.docx4j.dml.chart.CTChart;
import org.docx4j.dml.chart.CTChartLines;
import org.docx4j.dml.chart.CTChartSpace;
import org.docx4j.dml.chart.CTCrossBetween;
import org.docx4j.dml.chart.CTCrosses;
import org.docx4j.dml.chart.CTDLbls;
import org.docx4j.dml.chart.CTDispBlanksAs;
import org.docx4j.dml.chart.CTExternalData;
import org.docx4j.dml.chart.CTGrouping;
import org.docx4j.dml.chart.CTLayout;
import org.docx4j.dml.chart.CTLblAlgn;
import org.docx4j.dml.chart.CTLblOffset;
import org.docx4j.dml.chart.CTLegend;
import org.docx4j.dml.chart.CTLegendPos;
import org.docx4j.dml.chart.CTLineChart;
import org.docx4j.dml.chart.CTLineSer;
import org.docx4j.dml.chart.CTNumData;
import org.docx4j.dml.chart.CTNumDataSource;
import org.docx4j.dml.chart.CTNumFmt;
import org.docx4j.dml.chart.CTNumRef;
import org.docx4j.dml.chart.CTOrientation;
import org.docx4j.dml.chart.CTPlotArea;
import org.docx4j.dml.chart.CTScaling;
import org.docx4j.dml.chart.CTSerTx;
import org.docx4j.dml.chart.CTStrData;
import org.docx4j.dml.chart.CTStrRef;
import org.docx4j.dml.chart.CTStyle;
import org.docx4j.dml.chart.CTTextLanguageID;
import org.docx4j.dml.chart.CTTickLblPos;
import org.docx4j.dml.chart.CTTickMark;
import org.docx4j.dml.chart.CTUnsignedInt;
import org.docx4j.dml.chart.CTValAx;


public class Foo {
public JAXBElement createIt() {

org.docx4j.dml.chart.ObjectFactory dmlchartObjectFactory = new org.docx4j.dml.chart.ObjectFactory();

CTChartSpace chartspace = dmlchartObjectFactory.createCTChartSpace();
JAXBElement<org.docx4j.dml.chart.CTChartSpace> chartspaceWrapped = dmlchartObjectFactory.createChartSpace(chartspace);
    // Create object for lang
    CTTextLanguageID textlanguageid = dmlchartObjectFactory.createCTTextLanguageID();
    chartspace.setLang(textlanguageid);
        textlanguageid.setVal( "en-US");
    // Create object for style
    CTStyle style = dmlchartObjectFactory.createCTStyle();
    chartspace.setStyle(style);
    // Create object for chart
    CTChart chart = dmlchartObjectFactory.createCTChart();
    chartspace.setChart(chart);
        // Create object for autoTitleDeleted
        CTBoolean boolean = dmlchartObjectFactory.createCTBoolean();
        chart.setAutoTitleDeleted(boolean);
        // Create object for plotArea
        CTPlotArea plotarea = dmlchartObjectFactory.createCTPlotArea();
        chart.setPlotArea(plotarea);
            // Create object for layout
            CTLayout layout = dmlchartObjectFactory.createCTLayout();
            plotarea.setLayout(layout);
            // Create object for valAx
            CTLineChart linechart = dmlchartObjectFactory.createCTLineChart();
            plotarea.getAreaChartOrArea3DChartOrLineChart().add( linechart);
                // Create object for marker
                CTBoolean boolean2 = dmlchartObjectFactory.createCTBoolean();
                linechart.setMarker(boolean2);
                // Create object for crosses
                CTUnsignedInt unsignedint = dmlchartObjectFactory.createCTUnsignedInt();
                linechart.getAxId().add( unsignedint);
                    unsignedint.setVal( 812089344 );
                // Create object for crossBetween
                CTUnsignedInt unsignedint2 = dmlchartObjectFactory.createCTUnsignedInt();
                linechart.getAxId().add( unsignedint2);
                    unsignedint2.setVal( 178765824 );
                // Create object for grouping
                CTGrouping grouping = dmlchartObjectFactory.createCTGrouping();
                linechart.setGrouping(grouping);
                    grouping.setVal(org.docx4j.dml.chart.STGrouping.STANDARD);
                // Create object for varyColors
                CTBoolean boolean3 = dmlchartObjectFactory.createCTBoolean();
                linechart.setVaryColors(boolean3);
                // Create object for crossAx
                CTLineSer lineser = dmlchartObjectFactory.createCTLineSer();
                linechart.getSer().add( lineser);
                    // Create object for order
                    CTUnsignedInt unsignedint3 = dmlchartObjectFactory.createCTUnsignedInt();
                    lineser.setOrder(unsignedint3);
                        unsignedint3.setVal( 0 );
                    // Create object for val
                    CTNumDataSource numdatasource = dmlchartObjectFactory.createCTNumDataSource();
                    lineser.setVal(numdatasource);
                        // Create object for numRef
                        CTNumRef numref = dmlchartObjectFactory.createCTNumRef();
                        numdatasource.setNumRef(numref);
                            numref.setF( "Sheet1!$B$2:$B$5");
                            // Create object for numCache
                            CTNumData numdata = dmlchartObjectFactory.createCTNumData();
                            numref.setNumCache(numdata);
                                numdata.setFormatCode( "General");
                                // Create object for ptCount
                                CTUnsignedInt unsignedint4 = dmlchartObjectFactory.createCTUnsignedInt();
                                numdata.setPtCount(unsignedint4);
                                    unsignedint4.setVal( 4 );
                    // Create object for idx
                    CTUnsignedInt unsignedint5 = dmlchartObjectFactory.createCTUnsignedInt();
                    lineser.setIdx(unsignedint5);
                        unsignedint5.setVal( 0 );
                    // Create object for tx
                    CTSerTx sertx = dmlchartObjectFactory.createCTSerTx();
                    lineser.setTx(sertx);
                        // Create object for strRef
                        CTStrRef strref = dmlchartObjectFactory.createCTStrRef();
                        sertx.setStrRef(strref);
                            strref.setF( "Sheet1!$B$1");
                            // Create object for strCache
                            CTStrData strdata = dmlchartObjectFactory.createCTStrData();
                            strref.setStrCache(strdata);
                                // Create object for ptCount
                                CTUnsignedInt unsignedint6 = dmlchartObjectFactory.createCTUnsignedInt();
                                strdata.setPtCount(unsignedint6);
                                    unsignedint6.setVal( 1 );
                    // Create object for cat
                    CTAxDataSource axdatasource = dmlchartObjectFactory.createCTAxDataSource();
                    lineser.setCat(axdatasource);
                        // Create object for strRef
                        CTStrRef strref2 = dmlchartObjectFactory.createCTStrRef();
                        axdatasource.setStrRef(strref2);
                            strref2.setF( "Sheet1!$A$2:$A$5");
                            // Create object for strCache
                            CTStrData strdata2 = dmlchartObjectFactory.createCTStrData();
                            strref2.setStrCache(strdata2);
                                // Create object for ptCount
                                CTUnsignedInt unsignedint7 = dmlchartObjectFactory.createCTUnsignedInt();
                                strdata2.setPtCount(unsignedint7);
                                    unsignedint7.setVal( 4 );
                    // Create object for smooth
                    CTBoolean boolean4 = dmlchartObjectFactory.createCTBoolean();
                    lineser.setSmooth(boolean4);
                // Create object for crosses
                CTLineSer lineser2 = dmlchartObjectFactory.createCTLineSer();
                linechart.getSer().add( lineser2);
                    // Create object for order
                    CTUnsignedInt unsignedint8 = dmlchartObjectFactory.createCTUnsignedInt();
                    lineser2.setOrder(unsignedint8);
                        unsignedint8.setVal( 1 );
                    // Create object for val
                    CTNumDataSource numdatasource2 = dmlchartObjectFactory.createCTNumDataSource();
                    lineser2.setVal(numdatasource2);
                        // Create object for numRef
                        CTNumRef numref2 = dmlchartObjectFactory.createCTNumRef();
                        numdatasource2.setNumRef(numref2);
                            numref2.setF( "Sheet1!$C$2:$C$5");
                            // Create object for numCache
                            CTNumData numdata2 = dmlchartObjectFactory.createCTNumData();
                            numref2.setNumCache(numdata2);
                                numdata2.setFormatCode( "General");
                                // Create object for ptCount
                                CTUnsignedInt unsignedint9 = dmlchartObjectFactory.createCTUnsignedInt();
                                numdata2.setPtCount(unsignedint9);
                                    unsignedint9.setVal( 4 );
                    // Create object for idx
                    CTUnsignedInt unsignedint10 = dmlchartObjectFactory.createCTUnsignedInt();
                    lineser2.setIdx(unsignedint10);
                        unsignedint10.setVal( 1 );
                    // Create object for tx
                    CTSerTx sertx2 = dmlchartObjectFactory.createCTSerTx();
                    lineser2.setTx(sertx2);
                        // Create object for strRef
                        CTStrRef strref3 = dmlchartObjectFactory.createCTStrRef();
                        sertx2.setStrRef(strref3);
                            strref3.setF( "Sheet1!$C$1");
                            // Create object for strCache
                            CTStrData strdata3 = dmlchartObjectFactory.createCTStrData();
                            strref3.setStrCache(strdata3);
                                // Create object for ptCount
                                CTUnsignedInt unsignedint11 = dmlchartObjectFactory.createCTUnsignedInt();
                                strdata3.setPtCount(unsignedint11);
                                    unsignedint11.setVal( 1 );
                    // Create object for cat
                    CTAxDataSource axdatasource2 = dmlchartObjectFactory.createCTAxDataSource();
                    lineser2.setCat(axdatasource2);
                        // Create object for strRef
                        CTStrRef strref4 = dmlchartObjectFactory.createCTStrRef();
                        axdatasource2.setStrRef(strref4);
                            strref4.setF( "Sheet1!$A$2:$A$5");
                            // Create object for strCache
                            CTStrData strdata4 = dmlchartObjectFactory.createCTStrData();
                            strref4.setStrCache(strdata4);
                                // Create object for ptCount
                                CTUnsignedInt unsignedint12 = dmlchartObjectFactory.createCTUnsignedInt();
                                strdata4.setPtCount(unsignedint12);
                                    unsignedint12.setVal( 4 );
                    // Create object for smooth
                    CTBoolean boolean5 = dmlchartObjectFactory.createCTBoolean();
                    lineser2.setSmooth(boolean5);
                // Create object for crossBetween
                CTLineSer lineser3 = dmlchartObjectFactory.createCTLineSer();
                linechart.getSer().add( lineser3);
                    // Create object for order
                    CTUnsignedInt unsignedint13 = dmlchartObjectFactory.createCTUnsignedInt();
                    lineser3.setOrder(unsignedint13);
                        unsignedint13.setVal( 2 );
                    // Create object for val
                    CTNumDataSource numdatasource3 = dmlchartObjectFactory.createCTNumDataSource();
                    lineser3.setVal(numdatasource3);
                        // Create object for numRef
                        CTNumRef numref3 = dmlchartObjectFactory.createCTNumRef();
                        numdatasource3.setNumRef(numref3);
                            numref3.setF( "Sheet1!$D$2:$D$5");
                            // Create object for numCache
                            CTNumData numdata3 = dmlchartObjectFactory.createCTNumData();
                            numref3.setNumCache(numdata3);
                                numdata3.setFormatCode( "General");
                                // Create object for ptCount
                                CTUnsignedInt unsignedint14 = dmlchartObjectFactory.createCTUnsignedInt();
                                numdata3.setPtCount(unsignedint14);
                                    unsignedint14.setVal( 4 );
                    // Create object for idx
                    CTUnsignedInt unsignedint15 = dmlchartObjectFactory.createCTUnsignedInt();
                    lineser3.setIdx(unsignedint15);
                        unsignedint15.setVal( 2 );
                    // Create object for tx
                    CTSerTx sertx3 = dmlchartObjectFactory.createCTSerTx();
                    lineser3.setTx(sertx3);
                        // Create object for strRef
                        CTStrRef strref5 = dmlchartObjectFactory.createCTStrRef();
                        sertx3.setStrRef(strref5);
                            strref5.setF( "Sheet1!$D$1");
                            // Create object for strCache
                            CTStrData strdata5 = dmlchartObjectFactory.createCTStrData();
                            strref5.setStrCache(strdata5);
                                // Create object for ptCount
                                CTUnsignedInt unsignedint16 = dmlchartObjectFactory.createCTUnsignedInt();
                                strdata5.setPtCount(unsignedint16);
                                    unsignedint16.setVal( 1 );
                    // Create object for cat
                    CTAxDataSource axdatasource3 = dmlchartObjectFactory.createCTAxDataSource();
                    lineser3.setCat(axdatasource3);
                        // Create object for strRef
                        CTStrRef strref6 = dmlchartObjectFactory.createCTStrRef();
                        axdatasource3.setStrRef(strref6);
                            strref6.setF( "Sheet1!$A$2:$A$5");
                            // Create object for strCache
                            CTStrData strdata6 = dmlchartObjectFactory.createCTStrData();
                            strref6.setStrCache(strdata6);
                                // Create object for ptCount
                                CTUnsignedInt unsignedint17 = dmlchartObjectFactory.createCTUnsignedInt();
                                strdata6.setPtCount(unsignedint17);
                                    unsignedint17.setVal( 4 );
                    // Create object for smooth
                    CTBoolean boolean6 = dmlchartObjectFactory.createCTBoolean();
                    lineser3.setSmooth(boolean6);
                // Create object for dLbls
                CTDLbls dlbls = dmlchartObjectFactory.createCTDLbls();
                linechart.setDLbls(dlbls);
                    // Create object for showLegendKey
                    CTBoolean boolean7 = dmlchartObjectFactory.createCTBoolean();
                    dlbls.setShowLegendKey(boolean7);
                    // Create object for showVal
                    CTBoolean boolean8 = dmlchartObjectFactory.createCTBoolean();
                    dlbls.setShowVal(boolean8);
                    // Create object for showCatName
                    CTBoolean boolean9 = dmlchartObjectFactory.createCTBoolean();
                    dlbls.setShowCatName(boolean9);
                    // Create object for showSerName
                    CTBoolean boolean10 = dmlchartObjectFactory.createCTBoolean();
                    dlbls.setShowSerName(boolean10);
                    // Create object for showPercent
                    CTBoolean boolean11 = dmlchartObjectFactory.createCTBoolean();
                    dlbls.setShowPercent(boolean11);
                    // Create object for showBubbleSize
                    CTBoolean boolean12 = dmlchartObjectFactory.createCTBoolean();
                    dlbls.setShowBubbleSize(boolean12);
                // Create object for smooth
                CTBoolean boolean13 = dmlchartObjectFactory.createCTBoolean();
                linechart.setSmooth(boolean13);
            // Create object for catAx
            CTCatAx catax = dmlchartObjectFactory.createCTCatAx();
            plotarea.getValAxOrCatAxOrDateAx().add( catax);
                // Create object for axId
                CTUnsignedInt unsignedint18 = dmlchartObjectFactory.createCTUnsignedInt();
                catax.setAxId(unsignedint18);
                    unsignedint18.setVal( 812089344 );
                // Create object for scaling
                CTScaling scaling = dmlchartObjectFactory.createCTScaling();
                catax.setScaling(scaling);
                    // Create object for orientation
                    CTOrientation orientation = dmlchartObjectFactory.createCTOrientation();
                    scaling.setOrientation(orientation);
                        orientation.setVal(org.docx4j.dml.chart.STOrientation.MIN_MAX);
                // Create object for delete
                CTBoolean boolean14 = dmlchartObjectFactory.createCTBoolean();
                catax.setDelete(boolean14);
                // Create object for axPos
                CTAxPos axpos = dmlchartObjectFactory.createCTAxPos();
                catax.setAxPos(axpos);
                    axpos.setVal(org.docx4j.dml.chart.STAxPos.B);
                // Create object for majorTickMark
                CTTickMark tickmark = dmlchartObjectFactory.createCTTickMark();
                catax.setMajorTickMark(tickmark);
                    tickmark.setVal(org.docx4j.dml.chart.STTickMark.OUT);
                // Create object for minorTickMark
                CTTickMark tickmark2 = dmlchartObjectFactory.createCTTickMark();
                catax.setMinorTickMark(tickmark2);
                    tickmark2.setVal(org.docx4j.dml.chart.STTickMark.NONE);
                // Create object for tickLblPos
                CTTickLblPos ticklblpos = dmlchartObjectFactory.createCTTickLblPos();
                catax.setTickLblPos(ticklblpos);
                    ticklblpos.setVal(org.docx4j.dml.chart.STTickLblPos.NEXT_TO);
                // Create object for crossAx
                CTUnsignedInt unsignedint19 = dmlchartObjectFactory.createCTUnsignedInt();
                catax.setCrossAx(unsignedint19);
                    unsignedint19.setVal( 178765824 );
                // Create object for crosses
                CTCrosses crosses = dmlchartObjectFactory.createCTCrosses();
                catax.setCrosses(crosses);
                    crosses.setVal(org.docx4j.dml.chart.STCrosses.AUTO_ZERO);
                // Create object for auto
                CTBoolean boolean15 = dmlchartObjectFactory.createCTBoolean();
                catax.setAuto(boolean15);
                // Create object for lblOffset
                CTLblOffset lbloffset = dmlchartObjectFactory.createCTLblOffset();
                catax.setLblOffset(lbloffset);
                    lbloffset.setVal( new Integer(100) );
                // Create object for lblAlgn
                CTLblAlgn lblalgn = dmlchartObjectFactory.createCTLblAlgn();
                catax.setLblAlgn(lblalgn);
                    lblalgn.setVal(org.docx4j.dml.chart.STLblAlgn.CTR);
                // Create object for noMultiLvlLbl
                CTBoolean boolean16 = dmlchartObjectFactory.createCTBoolean();
                catax.setNoMultiLvlLbl(boolean16);
            // Create object for valAx
            CTValAx valax = dmlchartObjectFactory.createCTValAx();
            plotarea.getValAxOrCatAxOrDateAx().add( valax);
                // Create object for numFmt
                CTNumFmt numfmt = dmlchartObjectFactory.createCTNumFmt();
                valax.setNumFmt(numfmt);
                    numfmt.setFormatCode( "General");
                // Create object for axId
                CTUnsignedInt unsignedint20 = dmlchartObjectFactory.createCTUnsignedInt();
                valax.setAxId(unsignedint20);
                    unsignedint20.setVal( 178765824 );
                // Create object for scaling
                CTScaling scaling2 = dmlchartObjectFactory.createCTScaling();
                valax.setScaling(scaling2);
                    // Create object for orientation
                    CTOrientation orientation2 = dmlchartObjectFactory.createCTOrientation();
                    scaling2.setOrientation(orientation2);
                        orientation2.setVal(org.docx4j.dml.chart.STOrientation.MIN_MAX);
                // Create object for delete
                CTBoolean boolean17 = dmlchartObjectFactory.createCTBoolean();
                valax.setDelete(boolean17);
                // Create object for axPos
                CTAxPos axpos2 = dmlchartObjectFactory.createCTAxPos();
                valax.setAxPos(axpos2);
                    axpos2.setVal(org.docx4j.dml.chart.STAxPos.L);
                // Create object for majorGridlines
                CTChartLines chartlines = dmlchartObjectFactory.createCTChartLines();
                valax.setMajorGridlines(chartlines);
                // Create object for majorTickMark
                CTTickMark tickmark3 = dmlchartObjectFactory.createCTTickMark();
                valax.setMajorTickMark(tickmark3);
                    tickmark3.setVal(org.docx4j.dml.chart.STTickMark.OUT);
                // Create object for minorTickMark
                CTTickMark tickmark4 = dmlchartObjectFactory.createCTTickMark();
                valax.setMinorTickMark(tickmark4);
                    tickmark4.setVal(org.docx4j.dml.chart.STTickMark.NONE);
                // Create object for tickLblPos
                CTTickLblPos ticklblpos2 = dmlchartObjectFactory.createCTTickLblPos();
                valax.setTickLblPos(ticklblpos2);
                    ticklblpos2.setVal(org.docx4j.dml.chart.STTickLblPos.NEXT_TO);
                // Create object for crossAx
                CTUnsignedInt unsignedint21 = dmlchartObjectFactory.createCTUnsignedInt();
                valax.setCrossAx(unsignedint21);
                    unsignedint21.setVal( 812089344 );
                // Create object for crosses
                CTCrosses crosses2 = dmlchartObjectFactory.createCTCrosses();
                valax.setCrosses(crosses2);
                    crosses2.setVal(org.docx4j.dml.chart.STCrosses.AUTO_ZERO);
                // Create object for crossBetween
                CTCrossBetween crossbetween = dmlchartObjectFactory.createCTCrossBetween();
                valax.setCrossBetween(crossbetween);
                    crossbetween.setVal(org.docx4j.dml.chart.STCrossBetween.BETWEEN);
        // Create object for legend
        CTLegend legend = dmlchartObjectFactory.createCTLegend();
        chart.setLegend(legend);
            // Create object for overlay
            CTBoolean boolean18 = dmlchartObjectFactory.createCTBoolean();
            legend.setOverlay(boolean18);
            // Create object for legendPos
            CTLegendPos legendpos = dmlchartObjectFactory.createCTLegendPos();
            legend.setLegendPos(legendpos);
                legendpos.setVal(org.docx4j.dml.chart.STLegendPos.R);
        // Create object for plotVisOnly
        CTBoolean boolean19 = dmlchartObjectFactory.createCTBoolean();
        chart.setPlotVisOnly(boolean19);
        // Create object for dispBlanksAs
        CTDispBlanksAs dispblanksas = dmlchartObjectFactory.createCTDispBlanksAs();
        chart.setDispBlanksAs(dispblanksas);
            dispblanksas.setVal(org.docx4j.dml.chart.STDispBlanksAs.GAP);
        // Create object for showDLblsOverMax
        CTBoolean boolean20 = dmlchartObjectFactory.createCTBoolean();
        chart.setShowDLblsOverMax(boolean20);
    // Create object for roundedCorners
    CTBoolean boolean21 = dmlchartObjectFactory.createCTBoolean();
    chartspace.setRoundedCorners(boolean21);
    // Create object for externalData
    CTExternalData externaldata = dmlchartObjectFactory.createCTExternalData();
    chartspace.setExternalData(externaldata);
        // Create object for autoUpdate
        CTBoolean boolean22 = dmlchartObjectFactory.createCTBoolean();
        externaldata.setAutoUpdate(boolean22);
        externaldata.setId( "rId1");
    // Create object for date1904
    CTBoolean boolean23 = dmlchartObjectFactory.createCTBoolean();
    chartspace.setDate1904(boolean23);

return chartspaceWrapped;
}
}
Method 2

String openXML = "<c:chartSpace xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
            + "<c:date1904 val=\"0\"/>"
            + "<c:lang val=\"en-US\"/>"
            + "<c:roundedCorners val=\"0\"/>"
            + "<c:style val=\"2\"/>"
            + "<c:chart>"
                + "<c:autoTitleDeleted val=\"0\"/>"
                + "<c:plotArea>"
                    + "<c:layout/>"
                    + "<c:lineChart>"
                        + "<c:grouping val=\"standard\"/>"
                        + "<c:varyColors val=\"0\"/>"
                        + "<c:ser>"
                            + "<c:idx val=\"0\"/>"
                            + "<c:order val=\"0\"/>"
                            + "<c:tx>"
                                + "<c:strRef>"
                                    + "<c:f>Sheet1!$B$1</c:f>"
                                    + "<c:strCache>"
                                        + "<c:ptCount val=\"1\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>Series 1</c:v>"
                                        +"</c:pt>"
                                    +"</c:strCache>"
                                +"</c:strRef>"
                            +"</c:tx>"
                            + "<c:cat>"
                                + "<c:strRef>"
                                    + "<c:f>Sheet1!$A$2:$A$5</c:f>"
                                    + "<c:strCache>"
                                        + "<c:ptCount val=\"4\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>Category 1</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"1\">"
                                            + "<c:v>Category 2</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"2\">"
                                            + "<c:v>Category 3</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"3\">"
                                            + "<c:v>Category 4</c:v>"
                                        +"</c:pt>"
                                    +"</c:strCache>"
                                +"</c:strRef>"
                            +"</c:cat>"
                            + "<c:val>"
                                + "<c:numRef>"
                                    + "<c:f>Sheet1!$B$2:$B$5</c:f>"
                                    + "<c:numCache>"
                                        + "<c:formatCode>General</c:formatCode>"
                                        + "<c:ptCount val=\"4\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>4.3</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"1\">"
                                            + "<c:v>2.5</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"2\">"
                                            + "<c:v>3.5</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"3\">"
                                            + "<c:v>4.5</c:v>"
                                        +"</c:pt>"
                                    +"</c:numCache>"
                                +"</c:numRef>"
                            +"</c:val>"
                            + "<c:smooth val=\"0\"/>"
                        +"</c:ser>"
                        + "<c:ser>"
                            + "<c:idx val=\"1\"/>"
                            + "<c:order val=\"1\"/>"
                            + "<c:tx>"
                                + "<c:strRef>"
                                    + "<c:f>Sheet1!$C$1</c:f>"
                                    + "<c:strCache>"
                                        + "<c:ptCount val=\"1\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>Series 2</c:v>"
                                        +"</c:pt>"
                                    +"</c:strCache>"
                                +"</c:strRef>"
                            +"</c:tx>"
                            + "<c:cat>"
                                + "<c:strRef>"
                                    + "<c:f>Sheet1!$A$2:$A$5</c:f>"
                                    + "<c:strCache>"
                                        + "<c:ptCount val=\"4\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>Category 1</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"1\">"
                                            + "<c:v>Category 2</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"2\">"
                                            + "<c:v>Category 3</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"3\">"
                                            + "<c:v>Category 4</c:v>"
                                        +"</c:pt>"
                                    +"</c:strCache>"
                                +"</c:strRef>"
                            +"</c:cat>"
                            + "<c:val>"
                                + "<c:numRef>"
                                    + "<c:f>Sheet1!$C$2:$C$5</c:f>"
                                    + "<c:numCache>"
                                        + "<c:formatCode>General</c:formatCode>"
                                        + "<c:ptCount val=\"4\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>2.4</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"1\">"
                                            + "<c:v>4.4000000000000004</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"2\">"
                                            + "<c:v>1.8</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"3\">"
                                            + "<c:v>2.8</c:v>"
                                        +"</c:pt>"
                                    +"</c:numCache>"
                                +"</c:numRef>"
                            +"</c:val>"
                            + "<c:smooth val=\"0\"/>"
                        +"</c:ser>"
                        + "<c:ser>"
                            + "<c:idx val=\"2\"/>"
                            + "<c:order val=\"2\"/>"
                            + "<c:tx>"
                                + "<c:strRef>"
                                    + "<c:f>Sheet1!$D$1</c:f>"
                                    + "<c:strCache>"
                                        + "<c:ptCount val=\"1\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>Series 3</c:v>"
                                        +"</c:pt>"
                                    +"</c:strCache>"
                                +"</c:strRef>"
                            +"</c:tx>"
                            + "<c:cat>"
                                + "<c:strRef>"
                                    + "<c:f>Sheet1!$A$2:$A$5</c:f>"
                                    + "<c:strCache>"
                                        + "<c:ptCount val=\"4\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>Category 1</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"1\">"
                                            + "<c:v>Category 2</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"2\">"
                                            + "<c:v>Category 3</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"3\">"
                                            + "<c:v>Category 4</c:v>"
                                        +"</c:pt>"
                                    +"</c:strCache>"
                                +"</c:strRef>"
                            +"</c:cat>"
                            + "<c:val>"
                                + "<c:numRef>"
                                    + "<c:f>Sheet1!$D$2:$D$5</c:f>"
                                    + "<c:numCache>"
                                        + "<c:formatCode>General</c:formatCode>"
                                        + "<c:ptCount val=\"4\"/>"
                                        + "<c:pt idx=\"0\">"
                                            + "<c:v>2</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"1\">"
                                            + "<c:v>2</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"2\">"
                                            + "<c:v>3</c:v>"
                                        +"</c:pt>"
                                        + "<c:pt idx=\"3\">"
                                            + "<c:v>5</c:v>"
                                        +"</c:pt>"
                                    +"</c:numCache>"
                                +"</c:numRef>"
                            +"</c:val>"
                            + "<c:smooth val=\"0\"/>"
                        +"</c:ser>"
                        + "<c:dLbls>"
                            + "<c:showLegendKey val=\"0\"/>"
                            + "<c:showVal val=\"0\"/>"
                            + "<c:showCatName val=\"0\"/>"
                            + "<c:showSerName val=\"0\"/>"
                            + "<c:showPercent val=\"0\"/>"
                            + "<c:showBubbleSize val=\"0\"/>"
                        +"</c:dLbls>"
                        + "<c:marker val=\"1\"/>"
                        + "<c:smooth val=\"0\"/>"
                        + "<c:axId val=\"812089344\"/>"
                        + "<c:axId val=\"178765824\"/>"
                    +"</c:lineChart>"
                    + "<c:catAx>"
                        + "<c:axId val=\"812089344\"/>"
                        + "<c:scaling>"
                            + "<c:orientation val=\"minMax\"/>"
                        +"</c:scaling>"
                        + "<c:delete val=\"0\"/>"
                        + "<c:axPos val=\"b\"/>"
                        + "<c:majorTickMark val=\"out\"/>"
                        + "<c:minorTickMark val=\"none\"/>"
                        + "<c:tickLblPos val=\"nextTo\"/>"
                        + "<c:crossAx val=\"178765824\"/>"
                        + "<c:crosses val=\"autoZero\"/>"
                        + "<c:auto val=\"1\"/>"
                        + "<c:lblAlgn val=\"ctr\"/>"
                        + "<c:lblOffset val=\"100\"/>"
                        + "<c:noMultiLvlLbl val=\"0\"/>"
                    +"</c:catAx>"
                    + "<c:valAx>"
                        + "<c:axId val=\"178765824\"/>"
                        + "<c:scaling>"
                            + "<c:orientation val=\"minMax\"/>"
                        +"</c:scaling>"
                        + "<c:delete val=\"0\"/>"
                        + "<c:axPos val=\"l\"/>"
                        + "<c:majorGridlines/>"
                        + "<c:numFmt formatCode=\"General\" sourceLinked=\"1\"/>"
                        + "<c:majorTickMark val=\"out\"/>"
                        + "<c:minorTickMark val=\"none\"/>"
                        + "<c:tickLblPos val=\"nextTo\"/>"
                        + "<c:crossAx val=\"812089344\"/>"
                        + "<c:crosses val=\"autoZero\"/>"
                        + "<c:crossBetween val=\"between\"/>"
                    +"</c:valAx>"
                +"</c:plotArea>"
                + "<c:legend>"
                    + "<c:legendPos val=\"r\"/>"
                    + "<c:overlay val=\"0\"/>"
                +"</c:legend>"
                + "<c:plotVisOnly val=\"1\"/>"
                + "<c:dispBlanksAs val=\"gap\"/>"
                + "<c:showDLblsOverMax val=\"0\"/>"
            +"</c:chart>"
            + "<c:externalData r:id=\"rId1\">"
                + "<c:autoUpdate val=\"0\"/>"
            +"</c:externalData>"
        +"</c:chartSpace>";
CTChartSpace chartspace = (CTChartSpace)XmlUtils.unmarshalString(openXML);
 
Parsed in 0.108 seconds, using GeSHi 1.0.8.4