General

Components

Community

Development

TDF

Demos > Booking Sheet with Text Box

Overview

This demo shows the power of text box and paragraph support in Simple API.

The background of this demo is that a travel agency has to help customers book hotel. They have a spreadsheet file in hand, which records all of the visitors' information. They need to generate an order form with the requirements of hotel reservation using these data. A order form template has been supplied. This program generates order forms for all the visitors based on records of passengers in spreadsheet and the given template.



Code Introduction

There code of this demo is very simple. First, load template document and spreadsheet separately. Secondly, iterate data table and create new section and paragraph. The Text Boxes in the paragraph are also cloned. All of them are iterated and filled information from data table.
Data items counts are also computed. These counts are wrote to the bottom table of the sheet.

public static void main(String[] args) {
	try {
		// load template document
		TextDocument doc = TextDocument.loadDocument("DemoTemplate.odt");
		Table roomtable = doc.getTableByName("RoomTable");
		roomtable.remove();
		Section templateSection = doc.getSectionByName("SectionForm");
		// load passenger data document
		SpreadsheetDocument data = SpreadsheetDocument.loadDocument("Passengers.ods");
		Table table = data.getTableByName("passenger");
		int count = table.getRowCount();
		int type1Count = 0, type2Count = 0, type3Count = 0;
		for (int i = 1; i < count; i++) {
			Row row = table.getRowByIndex(i);
			for (int j = 0; j < 6; j++) {
				Paragraph para = templateSection.getParagraphByIndex(j,	false);
				Textbox nameBox = para.getTextboxIterator().next();
				String content = row.getCellByIndex(j).getDisplayText();
				nameBox.setTextContent(content);
				if (j == 5) {
					if (content.equals("Deluxe Room"))
						type1Count++;
					else if (content.equals("Studio/Junior Suite"))
						type2Count++;
					else if (content.equals("Executive Suite"))
						type3Count++;
				}
			}
			doc.appendSection(templateSection, false);
			doc.addParagraph(null);
		}
		templateSection.remove();
		roomtable.getCellByPosition(2, 1).setStringValue(type1Count + "");
		roomtable.getCellByPosition(2, 2).setStringValue(type2Count + "");
		roomtable.getCellByPosition(2, 3).setStringValue(type3Count + "");

		doc.getContentRoot().appendChild(roomtable.getOdfElement());
		doc.save("output.odt");
	} catch (Exception e) {
		e.printStackTrace();
	}

}

Download

Powered by the Simple Java API for ODF version 0.5. You can download the code of this demo from here.

Impressum (Legal Info) | Privacy Policy (Datenschutzerklärung) | Statutes (non-binding English translation) - Satzung (binding German version) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Apache License, v2.0. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License v2.0. “LibreOffice” and “The Document Foundation” are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy. LibreOffice was based on OpenOffice.org.