I can't read password protected workbooks currently (haven't found where it
is supported or not).  I can read password protected sheets.  If you find a
solution, please post it here.

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 10:10 AM
> To: 'POI Users List'
> Subject: RE: Password-protected Excel Workbook
> 
> 
> 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]
> 

Reply via email to