List of usage examples for org.apache.poi.hpsf DocumentSummaryInformation setCategory
public void setCategory(final String category)
From source file:org.alanwilliamson.openbd.plugin.spreadsheet.functions.SpreadsheetAddInfo.java
License:Open Source License
public cfData execute(cfSession _session, List<cfData> parameters) throws cfmRunTimeException { if (parameters.get(0).getDataType() != cfData.CFSTRUCTDATA) throwException(_session, "parameter must be of type structure"); cfSpreadSheetData spreadsheet = (cfSpreadSheetData) parameters.get(1); cfStructData s = (cfStructData) parameters.get(0); Workbook workbook = spreadsheet.getWorkBook(); /*//from w ww . jav a2 s . c o m * XSSFWorkbook */ if (workbook instanceof XSSFWorkbook) { XSSFWorkbook xSSFWorkbook = (XSSFWorkbook) workbook; CoreProperties cP = xSSFWorkbook.getProperties().getCoreProperties(); if (s.containsKey("author")) cP.setCreator(s.getData("author").getString()); if (s.containsKey("category")) cP.setCategory(s.getData("category").getString()); if (s.containsKey("subject")) cP.setSubjectProperty(s.getData("subject").getString()); if (s.containsKey("title")) cP.setTitle(s.getData("title").getString()); if (s.containsKey("revision")) cP.setRevision(s.getData("revision").getString()); if (s.containsKey("description")) cP.setDescription(s.getData("description").getString()); } else { HSSFWorkbook hSSFWorkbook = (HSSFWorkbook) workbook; DocumentSummaryInformation dSummary = hSSFWorkbook.getDocumentSummaryInformation(); if (dSummary == null) { hSSFWorkbook.createInformationProperties(); dSummary = hSSFWorkbook.getDocumentSummaryInformation(); } if (s.containsKey("category")) dSummary.setCategory(s.getData("category").getString()); if (s.containsKey("manager")) dSummary.setManager(s.getData("manager").getString()); if (s.containsKey("company")) dSummary.setCompany(s.getData("company").getString()); SummaryInformation sInformation = hSSFWorkbook.getSummaryInformation(); if (s.containsKey("title")) sInformation.setTitle(s.getData("title").getString()); if (s.containsKey("subject")) sInformation.setSubject(s.getData("subject").getString()); if (s.containsKey("author")) sInformation.setAuthor(s.getData("author").getString()); if (s.containsKey("comments")) sInformation.setComments(s.getData("comments").getString()); if (s.containsKey("keywords")) sInformation.setKeywords(s.getData("keywords").getString()); if (s.containsKey("lastauthor")) sInformation.setLastAuthor(s.getData("lastauthor").getString()); } return cfBooleanData.TRUE; }
From source file:poi.hpsf.examples.ModifyDocumentSummaryInformation.java
License:Apache License
/** * <p>Main method - see class description.</p> * * @param args The command-line parameters. * @throws java.io.IOException//from ww w . j av a 2 s. co m * @throws MarkUnsupportedException * @throws NoPropertySetStreamException * @throws UnexpectedPropertySetTypeException * @throws WritingNotSupportedException */ public static void main(final String[] args) throws IOException, NoPropertySetStreamException, MarkUnsupportedException, UnexpectedPropertySetTypeException, WritingNotSupportedException { /* Read the name of the POI filesystem to modify from the command line. * For brevity to boundary check is performed on the command-line * arguments. */ File poiFilesystem = new File(args[0]); /* Open the POI filesystem. */ InputStream is = new FileInputStream(poiFilesystem); POIFSFileSystem poifs = new POIFSFileSystem(is); is.close(); /* Read the summary information. */ DirectoryEntry dir = poifs.getRoot(); SummaryInformation si; try { DocumentEntry siEntry = (DocumentEntry) dir.getEntry(SummaryInformation.DEFAULT_STREAM_NAME); DocumentInputStream dis = new DocumentInputStream(siEntry); PropertySet ps = new PropertySet(dis); dis.close(); si = new SummaryInformation(ps); } catch (FileNotFoundException ex) { /* There is no summary information yet. We have to create a new * one. */ si = PropertySetFactory.newSummaryInformation(); } /* Change the author to "Rainer Klute". Any former author value will * be lost. If there has been no author yet, it will be created. */ si.setAuthor("Rainer Klute"); System.out.println("Author changed to " + si.getAuthor() + "."); /* Handling the document summary information is analogous to handling * the summary information. An additional feature, however, are the * custom properties. */ /* Read the document summary information. */ DocumentSummaryInformation dsi; try { DocumentEntry dsiEntry = (DocumentEntry) dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME); DocumentInputStream dis = new DocumentInputStream(dsiEntry); PropertySet ps = new PropertySet(dis); dis.close(); dsi = new DocumentSummaryInformation(ps); } catch (FileNotFoundException ex) { /* There is no document summary information yet. We have to create a * new one. */ dsi = PropertySetFactory.newDocumentSummaryInformation(); } /* Change the category to "POI example". Any former category value will * be lost. If there has been no category yet, it will be created. */ dsi.setCategory("POI example"); System.out.println("Category changed to " + dsi.getCategory() + "."); /* Read the custom properties. If there are no custom properties yet, * the application has to create a new CustomProperties object. It will * serve as a container for custom properties. */ CustomProperties customProperties = dsi.getCustomProperties(); if (customProperties == null) customProperties = new CustomProperties(); /* Insert some custom properties into the container. */ customProperties.put("Key 1", "Value 1"); customProperties.put("Schl\u00fcssel 2", "Wert 2"); customProperties.put("Sample Number", new Integer(12345)); customProperties.put("Sample Boolean", Boolean.TRUE); customProperties.put("Sample Date", new Date()); /* Read a custom property. */ Object value = customProperties.get("Sample Number"); /* Write the custom properties back to the document summary * information. */ dsi.setCustomProperties(customProperties); /* Write the summary information and the document summary information * to the POI filesystem. */ si.write(dir, SummaryInformation.DEFAULT_STREAM_NAME); dsi.write(dir, DocumentSummaryInformation.DEFAULT_STREAM_NAME); /* Write the POI filesystem back to the original file. Please note that * in production code you should never write directly to the origin * file! In case of a writing error everything would be lost. */ OutputStream out = new FileOutputStream(poiFilesystem); poifs.writeFilesystem(out); out.close(); }