Jonathan, The specific file I am trying to read is password protected. My code works for all files except the password protected one.
I throw an exception so that the error flows up the GUI to a message box a couple of layers above this code. Thanks, Oscar A. Ramirez Goldman, Sachs & Co. Voice: (212) 357-7402 Email: [EMAIL PROTECTED] -----Original Message----- From: Jonathan Cowherd [mailto:[EMAIL PROTECTED] Sent: Friday, April 04, 2003 10:05 AM To: 'POI Users List'; 'Vikranth' Subject: RE: Password-protected Excel Workbook Here is how I extract a HSSFWorkbook object from a excel file (note: I use log4j oppose to System.out): public HSSFWorkbook loadFile(String file) { HSSFWorkbook iworkbook = null; try { InputStream idocument = new FileInputStream(file); log.debug("File exists, reading..."); POIFSFileSystem idata = new POIFSFileSystem(idocument); log.debug("File read."); iworkbook = new HSSFWorkbook(idata); log.debug("Excel Workbook found."); idocument.close(); } catch (FileNotFoundException e) { //e.printStackTrace(); log.fatal("File " + file + " can not be found."); System.exit(0); } catch (IOException e) { e.printStackTrace(); log.fatal("File or workbook " + file + " can not be read."); System.exit(0); } return (iworkbook); } I'm not sure why you catch IOException and create a new IOException to be thrown. What are you attempting to do with that if you don't mind me asking? Jonathan Paul Cowherd Linux and Java Administrator Genscape, Inc. Email: [EMAIL PROTECTED] Office: (502) 583-3730 Mobile: (502) 314-0444 > -----Original Message----- > From: Ramirez, Oscar [mailto:[EMAIL PROTECTED] > Sent: Friday, April 04, 2003 9:57 AM > To: 'Vikranth' > Cc: 'POI User Group' > Subject: RE: Password-protected Excel Workbook > > > Vikranth, > > I tried and got a very nasty exception. My code reads as follows: > > HSSFSheet sheet; > > public POIWizardExcelParser(String fileName) throws IOException > { > FileInputStream fin; > POIFSFileSystem fs; > HSSFWorkbook wb; > > try > { > fin = new FileInputStream(fileName); > } > catch (IOException io) > { > throw new IOException("Cannot open file: " + > fileName + "\n" + io.getMessage()); > } > > try > { > fs = new POIFSFileSystem(fin); > } > catch (Exception e) > { > throw new IOException("Cannot create a > POIFS File > System.\n" + e.getMessage()); > } > > try > { > wb = new HSSFWorkbook(fs); > } > catch (Exception e) > { > throw new IOException("Cannot create a > Workbook.\n" > + e.getMessage()); > } > > sheet = wb.getSheetAt(0); > } > > I get the following error when creating a new HSSFWorkbook: > > > java.lang.reflect.InvocationTargetException > at > sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeCo > nstructorAcces > sorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Dele > gatingConstruc > torAccessorImpl.java:27) > at > java.lang.reflect.Constructor.newInstance(Constructor.java:274) > at > org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFa > ctory.java:246 > ) > at > org.apache.poi.hssf.record.RecordFactory.createRecords(RecordF > actory.java:18 > 4) > at > org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook > .java:140) > at > com.gs.eq.mot.gui.base.POIWizardExcelParser.<init>(POIWizardEx > celParser.java > :49) > at > com.gs.eq.mot.gui.wizard.views.InputPanel.setWizardData(InputP > anel.java:109) > at > com.gs.eq.mot.gui.wizard.controller.WizardController.forwardCo > mmand(WizardCo > ntroller.java:221) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess > orImpl.java:39 > ) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth > odAccessorImpl > .java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at > com.gs.eq.mot.gui.base.GenericListener$1.invoke(GenericListene > r.java:56) > at $Proxy0.actionPerformed(Unknown Source) > at > com.gs.eq.mot.gui.base.JLFAbstractAction.actionPerformed(JLFAb > stractAction.j > ava:99) > at > javax.swing.AbstractButton.fireActionPerformed(AbstractButton. > java:1764) > at > javax.swing.AbstractButton$ForwardActionEvents.actionPerformed > (AbstractButto > n.java:1817) > at > javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButt > onModel.java:4 > 19) > at > javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257) > at > javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Basic > ButtonListener > .java:245) > at > java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster > .java:227) > at > java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster > .java:227) > at java.awt.Component.processMouseEvent(Component.java:5093) > at java.awt.Component.processEvent(Component.java:4890) > at java.awt.Container.processEvent(Container.java:1566) > at java.awt.Component.dispatchEventImpl(Component.java:3598) > at java.awt.Container.dispatchEventImpl(Container.java:1623) > at java.awt.Component.dispatchEvent(Component.java:3439) > at > java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450) > at > java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165) > at > java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095) > at java.awt.Container.dispatchEventImpl(Container.java:1609) > at java.awt.Window.dispatchEventImpl(Window.java:1585) > at java.awt.Component.dispatchEvent(Component.java:3439) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:450) > at > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDis > patchThread.ja > va:197) > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispa > tchThread.java > :150) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136) > at > java.awt.EventDispatchThread.run(EventDispatchThread.java:99) > Caused by: java.lang.IllegalArgumentException: Illegal length > at > org.apache.poi.util.StringUtil.getFromUnicode(StringUtil.java:107) > at > org.apache.poi.hssf.record.FontRecord.fillFields(FontRecord.java:172) > at > org.apache.poi.hssf.record.Record.fillFields(Record.java:142) > at org.apache.poi.hssf.record.Record.<init>(Record.java:104) > at > org.apache.poi.hssf.record.FontRecord.<init>(FontRecord.java:125) > > I am curious how you got around it. > > Oscar A. Ramirez > Goldman, Sachs & Co. > Voice: (212) 357-7402 > Email: [EMAIL PROTECTED] > > > -----Original Message----- > From: Vikranth [mailto:[EMAIL PROTECTED] > Sent: Friday, April 04, 2003 12:49 AM > To: Ramirez, Oscar > Subject: Password-protected Excel Workbook > > > Hello Oscar, > You just forget that the excel file is password protected. > You will still > be able to read and write to the excel file even if it is password > protected. I have tried it out .. > Regards, > Vikranth > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
