use of com.sun.jna.platform.win32.COM.util.office.excel.Chart in project jna by java-native-access.
the class Excelautomation_KB_219151_Mod method displayQuaterlySales.
private static void displayQuaterlySales(ComIWorksheet sheet) {
// Determine how many quarters to display data for.
int iNumQtrs = 4;
for (; iNumQtrs >= 2; iNumQtrs--) {
JOptionPane pane = new JOptionPane(String.format("Enter sales data for %d quarter(s)?", iNumQtrs), JOptionPane.QUESTION_MESSAGE);
pane.setOptionType(JOptionPane.YES_NO_OPTION);
JDialog dialog = pane.createDialog("Input...");
dialog.setAlwaysOnTop(true);
dialog.show();
if (((Integer) pane.getValue()) == JOptionPane.YES_OPTION) {
break;
}
}
JOptionPane.showMessageDialog(null, String.format("Displaying data for %d quarter(s).", iNumQtrs));
// Starting at E1, fill headers for the number of columns selected.
ComIRange oResizeRange = sheet.getRange("E1", "E1").getResize(VARIANT_MISSING, iNumQtrs);
oResizeRange.setFormula("=\"Q\" & COLUMN() - 4 & CHAR(10) & \"Sales\"");
// Change the Orientation and WrapText properties for the headers.
oResizeRange.setOrientation(38);
oResizeRange.setWrapText(true);
// Fill the interior color of the headers.
oResizeRange.getInterior().setColorIndex(36);
// Fill the columns with a formula and apply a number format.
oResizeRange = sheet.getRange("E2", "E6").getResize(VARIANT_MISSING, iNumQtrs);
oResizeRange.setFormula("=RAND()*100");
oResizeRange.setNumberFormat("$0.00");
// Apply borders to the Sales data and headers.
oResizeRange = sheet.getRange("E1", "E6").getResize(VARIANT_MISSING, iNumQtrs);
oResizeRange.getBorders().setWeight(XlBorderWeight.xlThin);
// Add a Totals formula for the sales data and apply a border.
oResizeRange = sheet.getRange("E8", "E8").getResize(VARIANT_MISSING, iNumQtrs);
oResizeRange.setFormula("=SUM(E2:E6)");
Borders oResizeRangeBorders = oResizeRange.getBorders();
oResizeRangeBorders.setLineStyle(XlLineStyle.xlDouble);
oResizeRangeBorders.setWeight(XlBorderWeight.xlThick);
// Add a Chart for the selected data
oResizeRange = sheet.getRange("E2:E6").getResize(VARIANT_MISSING, iNumQtrs);
Chart chart = sheet.getParent().getCharts().Add(VARIANT_MISSING, VARIANT_MISSING, VARIANT_MISSING, VARIANT_MISSING);
// Java note: Assumption is, that VARIANT_MISSING is the correct indicator
// for missing values, it turns out, NULL is correct in this case...
chart.ChartWizard(oResizeRange, XlChartType.xl3DColumn, VARIANT_MISSING, XlRowCol.xlColumns, null, null, null, null, null, null, null);
chart.SeriesCollection(1).setXValues(sheet.getRange("C2", "C6"));
for (int i = 1; i <= iNumQtrs; i++) {
chart.SeriesCollection(i).setName("=\"Q" + Integer.toString(i) + "\"");
}
chart.Location(XlChartLocation.xlLocationAsObject, sheet.getName());
// Move the chart so as not to cover your data.
Shape shape = sheet.getShapes().Item(1);
shape.setTop(sheet.getRows(10).getTop());
shape.setLeft(sheet.getColumns(2).getLeft());
}
use of com.sun.jna.platform.win32.COM.util.office.excel.Chart in project jna by java-native-access.
the class Wordautomation_KB_313193_Mod method main.
public static void main(String[] args) throws IOException {
// Initialize COM Subsystem
Ole32.INSTANCE.CoInitializeEx(Pointer.NULL, Ole32.COINIT_MULTITHREADED);
// Initialize Factory for COM object creation
Factory fact = new Factory();
try {
// oEndOfDoc is a predefined bookmark
final String oEndOfDoc = "\\endofdoc";
/* \endofdoc is a predefined bookmark */
// Start word application
ComWord_Application word = fact.createObject(ComWord_Application.class);
ComIApplication wordApp = word.queryInterface(ComIApplication.class);
// Make word visible/invisible (invisible is default)
wordApp.setVisible(true);
// Create an empty document (signiture of depends on bindings)
ComIDocument doc = wordApp.getDocuments().Add();
Helper.sleep(5);
//Insert a paragraph at the beginning of the document.
Paragraph para1 = doc.getContent().getParagraphs().Add(VARIANT_MISSING);
para1.getRange().setText("Heading 1");
para1.getRange().getFont().setBold(1);
//24 pt spacing after paragraph.
para1.getFormat().setSpaceAfter(24F);
para1.getRange().InsertParagraphAfter();
//Insert a paragraph at the end of the document.
Paragraph para2 = doc.getContent().getParagraphs().Add(doc.getBookmarks().Item(oEndOfDoc).getRange());
para2.getRange().setText("Heading 2");
para2.getFormat().setSpaceAfter(6F);
para2.getRange().InsertParagraphAfter();
//Insert another paragraph.
Paragraph para3 = doc.getContent().getParagraphs().Add(doc.getBookmarks().Item(oEndOfDoc).getRange());
para3.getRange().setText("This is a sentence of normal text. Now here is a table:");
para3.getRange().getFont().setBold(0);
para3.getFormat().setSpaceAfter(24F);
para3.getRange().InsertParagraphAfter();
//Insert a 3 x 5 table, fill it with data, and make the first row
//bold and italic.
Table table = doc.getTables().Add(doc.getBookmarks().Item(oEndOfDoc).getRange(), 3, 5, VARIANT_MISSING, VARIANT_MISSING);
table.getRange().getParagraphFormat().setSpaceAfter(6F);
for (int r = 1; r <= 3; r++) {
for (int c = 1; c <= 5; c++) {
String strText = "r" + r + "c" + c;
table.Cell(r, c).getRange().setText(strText);
}
}
table.getRows().Item(1).getRange().getFont().setBold(1);
table.getRows().Item(1).getRange().getFont().setItalic(1);
//Add some text after the table.
Paragraph para4 = doc.getContent().getParagraphs().Add(doc.getBookmarks().Item(oEndOfDoc).getRange());
para4.getRange().InsertParagraphBefore();
para4.getRange().setText("And here's another table:");
para4.getFormat().setSpaceAfter(24F);
para4.getRange().InsertParagraphAfter();
//Insert a 5 x 2 table, fill it with data, and change the column widths.
table = doc.getTables().Add(doc.getBookmarks().Item(oEndOfDoc).getRange(), 5, 2, VARIANT_MISSING, VARIANT_MISSING);
table.getRange().getParagraphFormat().setSpaceAfter(6F);
for (int r = 1; r <= 5; r++) {
for (int c = 1; c <= 2; c++) {
String strText = "r" + r + "c" + c;
table.Cell(r, c).getRange().setText(strText);
}
}
//Change width of columns 1 & 2
table.getColumns().Item(1).setWidth(wordApp.InchesToPoints(2F));
table.getColumns().Item(2).setWidth(wordApp.InchesToPoints(3F));
//Keep inserting text. When you get to 7 inches from top of the
//document, insert a hard page break.
Range wrdRng;
float dPos = wordApp.InchesToPoints(7F);
doc.getBookmarks().Item(oEndOfDoc).getRange().InsertParagraphAfter();
do {
wrdRng = doc.getBookmarks().Item(oEndOfDoc).getRange();
wrdRng.getParagraphFormat().setSpaceAfter(6F);
wrdRng.InsertAfter("A line of text");
wrdRng.InsertParagraphAfter();
} while (dPos >= (Float) wrdRng.getInformation(WdInformation.wdVerticalPositionRelativeToPage));
wrdRng.Collapse(WdCollapseDirection.wdCollapseEnd);
wrdRng.InsertBreak(WdBreakType.wdPageBreak);
wrdRng.Collapse(WdCollapseDirection.wdCollapseEnd);
wrdRng.InsertAfter("We're now on page 2. Here's my chart:");
wrdRng.InsertParagraphAfter();
//Insert a chart and change the chart.
InlineShape oShape = doc.getBookmarks().Item(oEndOfDoc).getRange().getInlineShapes().AddOLEObject("MSGraph.Chart.8", "", Boolean.FALSE, Boolean.FALSE, VARIANT_MISSING, VARIANT_MISSING, VARIANT_MISSING, VARIANT_MISSING);
//Demonstrate use of late bound oChart and oChartApp objects to
//manipulate the chart object with MSGraph.
IDispatch oChart = oShape.getOLEFormat().getObject();
IDispatch oChartApp = oChart.getProperty(IDispatch.class, "Application");
//Change the chart type to Line
oChart.setProperty("ChartType", XlChartType.xlLine.getValue());
//Update the chart image and quit MSGraph.
oChartApp.invokeMethod(Void.class, "Update");
oChartApp.invokeMethod(Void.class, "Quit");
//... If desired, you can proceed from here using the Microsoft Graph
//Object model on the oChart and oChartApp objects to make additional
//changes to the chart.
//Set the width of the chart.
oShape.setWidth(wordApp.InchesToPoints(6.25f));
oShape.setHeight(wordApp.InchesToPoints(3.57f));
//Add text after the chart.
wrdRng = doc.getBookmarks().Item(oEndOfDoc).getRange();
wrdRng.InsertParagraphAfter();
wrdRng.InsertAfter("THE END.");
File tempFile = Helper.createNotExistingFile("KB_313193_", ".pdf");
doc.ExportAsFixedFormat(tempFile.getAbsolutePath(), WdExportFormat.wdExportFormatPDF, Boolean.FALSE, WdExportOptimizeFor.wdExportOptimizeForOnScreen, WdExportRange.wdExportAllDocument, null, null, WdExportItem.wdExportDocumentContent, Boolean.FALSE, Boolean.TRUE, WdExportCreateBookmarks.wdExportCreateNoBookmarks, Boolean.TRUE, Boolean.FALSE, Boolean.TRUE, VARIANT_MISSING);
System.out.println("Output written to: " + tempFile.getAbsolutePath());
doc.Close(WdSaveOptions.wdDoNotSaveChanges, VARIANT_MISSING, VARIANT_MISSING);
wordApp.Quit();
} finally {
fact.disposeAll();
Ole32.INSTANCE.CoUninitialize();
}
}
Aggregations