Bug : Invalid file extension error when opening exported excel

Hi All,
In one of my jsff page, i have implemented 'exportToExcel' functionality through a exportcollectionactionlistener on a table to export its data to excel. When i try opening the generated excel, i get the following warning in excel 2007 :
"The file you are trying to open, 'Export.xls,' is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?" - When I clicked YES to the message, the exported excel opened and data is present.
How can i get rid of this warning message, because it is annoying for any user to click YES every time the excel is opened ? I am using jdev version 11.1.1.6.0 This is my code :
<af:commandToolbarButton text="Export to Excel" id="cb1">
<af:exportCollectionActionListener exportedId="t1"
                           type="excelHTML"
                           filename="Export.xls"
                           title="Excel export"/>
</af:commandToolbarButton>I found a similar forum post here File format of exportCollectionActionListener ADF 11g But they are suggesting a registry fix which is not possible in production environment.
Any possible workaround or suggestions to resolve this issue is much appreciated.
Thanks

You can save the data on the client and the check the data.
Have you considered using POI to generate real xsl workbook files?
Timo

Similar Messages

  • Error when opening exported Excel document

    hi,
    i'm using the following to let the user export JSP to Excel file:
    response.setContentType("application/download ");
    response.setHeader("Content-Disposition","attachment; filename=test.xls");
    problem happens only for the first when i try to open the file in excel.
    Excel gives me " 'test.xls[1]' could not be found. Check the spelling of the file name, and verify that the file location is correct. ...."
    Subsequent tries work fine with no problem.
    i noticed that Excel is trying to open a file with a different name, appending [1], which obviosuly doesn't find in its first try.
    i would appreciate any kind of clue.
    thank you.

    I got this from a different post on this forum.
    Basically, on your JSP page which you want to export to Excel, set the content type and header as below. Then the browser(Internet Explorer) will try to open the excel document in itself.
    <%
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition","attachment; filename=" + "test.xls" );
    %>
    <HTML>
    <head>
    <title>Excel Compatible HTML</title>
    <style type="text/css">
    td.currencyCustom { mso-number-format:"$#,##0.00_);[Red]($#,##0.00)"; text-align: right; }
    td.currencyDefault { mso-number-format:"Currency"; text-align: right; }
    td.integer { mso-number-format:"#,##0_);[Red](#,##0)"; text-align: right; }
    td.percent { mso-number-format:"%0.00"; text-align: right; }
    </style>
    </head>
    <body>
    <table summary="Excel formats supported" width="500">
    <tr><td colspan="2"><h1>Excel Compatible HTML</h1></td></tr>
    <tr><td colspan="2"><p>This is a simple demo of how HTML tables can be extended
    by using CSS styles recognized by Excel 2000. I haven't yet
    been able to find any documentation on these styles. Most of this was
    derived by saving a simple spreadsheet using the <i>Save as Web Page ...</i>
    option then experimenting with formats using the <code>mso-number-format</code>
    CSS attribute.</p>
    <p>Excel will convert unformatted numbers to the specified style so formatting
    them isn't required if the output is only to be used by Excel. Otherwise, they
    should be formatted to display correctly in browsers.</p>
    <!--[if !excel]>  <![endif]-->
    </td></tr>
    <tr><td>12,345.60 with class="currencyCustom":</td><td class="currencyCustom">12,345.60</td></tr>
    <tr><td>12345.6 with class="currencyCustom":</td><td class="currencyCustom">12345.6</td></tr>
    <tr><td>-12,345.60 with class="currencyCustom":</td><td class="currencyCustom">-12,345.60</td></tr>
    <tr><td>-12345.6 with class="currencyDefault":</td><td halign="right" class="currencyDefault" x:num="-12345.6">($12,345.60)</td></tr>
    <tr><td colspan="2"> </td></tr>
    <tr><td>123456789 with class="integer":</td><td class="integer">123456789</td></tr>
    <tr><td>-123456789 with class="integer":</td><td class="integer">-123456789</td></tr>
    <tr><td>123,456,789 with class="integer"</td><td class="integer">123,456,789</td></tr>
    <tr><td>-123,456,789 with class="integer"</td><td class="integer">-123,456,789</td></tr>
    <tr><td colspan="2"> </td></tr>
    <tr><td>%100.00 with class="percent":</td><td class="percent">%100.00</td></tr>
    <tr><td>%43.21 with class="percent":</td><td class="percent">%43.21</td></tr>
    <tr><td>1.0 with class="percent":</td><td class="percent">1.0</td></tr>
    <tr><td>0.4321 with class="percent":</td><td class="percent">0.4321</td></tr>
    </table>
    </body>
    </html>
    Currently, i'm trying a different approach.
    I'm using POI from jakarta site to create Excel file manually.
    here's a snippet of my code in my web request handler that creates an Excel file.
    String exportType =(String) request.getParameter("export_type");
    if(exportType!=null && exportType.equals(WebConstants.EXPORT_TYPE_MS_EXCEL))
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet("Test Sheet");
    HSSFCell cell = null;
    HSSFCellStyle cellStyle = workbook.createCellStyle();
    HSSFFont font = workbook.createFont();
    font.setColor((short)0xc);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    cellStyle.setFont(font);
    HSSFRow titleRow = sheet.createRow((short)0);
    cell = titleRow.createCell((short)0);
    cell.setCellValue("Order ID");
    cell.setCellStyle(cellStyle);
    cell = titleRow.createCell((short)1);
    cell.setCellValue("Order Time");
    cell.setCellStyle(cellStyle);
    for(short i=0; i<blotterModelList.size(); i++)
    BlotterModel model = (BlotterModel)blotterModelList.get(i);
    HSSFRow row = sheet.createRow((short)(i+1));
    row.createCell((short)0).setCellValue(model.getOrderId());
    row.createCell((short)1).setCellValue(model.getOrderTime());
    ServletOutputStream stream = response.getOutputStream();
    response.setContentType("application/vnd.ms-excel");
    workbook.write(stream);
    stream.flush();
    stream.close();
    Sir: I am having touble with my excel exporting.
    Could you show me what you are doing and I can go to
    school on it? Thanks!

  • Invalid File Name Errors when syncing to Ipod

    Ever since an update last fall I have been getting Invalid file name errors when I try to sync my ipod. A window would pop up saying "Windows could not copy 'SONGNAME' to the iPod 'IPODNAME' because an unkown error occurred (-37)." I would press OK and another window would immediately pop up that would say, "Attempting to copy to the disk 'IPODNAME' failed. the file name is invalid or too long."
    The windows would keep popping up countless times until the sync would just seem to time out and stop.
    The problem songs would have no problem playing in iTunes.
    Prior to the update this did not happen. No new songs were added around this time and nothing was changed to my file directory structure. I was too busy to troubleshoot this problem at the time and hoped that another update would fix it. Well, here I am many months and updates later and still no fix. After fiddling with iTunes and resetting my Ipod multiple times (goodbye saved angry bird games)I have found out that:
    1. By writing down the file name when the error windows pop up I can get a partial list of the problem file names. I could not get a complete list of the problem files because the sync would time out before a full list could be compiled (the list appears to be in the hundreds).
    2. If I changed the name of the file by adding OR deleting one character, remapping the song in itunes, the song would then sync properly.
    3. If I changed the name of the file, remapped the location of the file within iTunes, changed the name of the file BACK to the original name that iTunes supposedly had a problem with, and then remapped the location of the song within iTunes, the song would then sync properly
    4. If I moved the song to a different directory without changing the file name, remapped the song within iTunes, the song would sync properly.
    5. If I moved the song to a different directory without changing the file name, remapped the song within iTunes, moved the file BACK to the original directory, remapped the song again, the song would sync properly.
    6. If I renamed the file and then named it back to the original file name WITHOUT remapping the file location in iTunes, the song would still not sync properly
    7. If I moved the file into a different directory and then back again without remapping the file location, the song would still not sync properly.
    8. Changing or deleting the tags has no effect at all.
    9. File name lengths are already under 200 characters and there are no special characters used.
    So, to sum up, I have found out a way to fix the issue. The problem is, that there are hundreds of songs that appear to be affected and renaming or moving every single one individually and then remapping is extremely inefficient and ignores the cause of the problem. I also did not want to delete the itunes library and then add all of the songs back in because I have many custom playlists that I have spent hours creating and I do not want to delete them.
    Is there a better way to fix the problem? Especially if someone knows the root cause?

    I got a procmon log file and examined it. I have the file and I could also provide you with that or screenshots of it.
    There is nothing unusual about it. I can see entires in which CR has successfully opened the report and has cached in a c:\windows\temp.
    However there is one or two non-successful entries that may be related, especially that examining the stack trace brings us to a call to get_ProductLocaleID():
    - A call to read reg entry HKU\S-1-5-20\Software\Business Objects\Suite 12.0\Crystal Reports\Locale fails with NAME NOT FOUND.
    - immediately after that and from the same process (w3wp.ex) there is a call to open directory "c:\" which is logged as ACCESS DENIED.
    Any subsequent unsuccessful calls seem to be results of exception handling in the debug code.
    Does this point to any setup issues with CR? We always run the redistributable x86 runtime when installing it.

  • "Invalid file name" error when trying to load the report in IIS/CR 2008

    We have deployed our application to many installations with no problem however in one particular case we get this error whenever we try to load any reports in our web app.
    I made sure that the DefaulAppPool user (Network Service) has read+excute on all folders as well as the IIS anonymous user.
    The anonnymous access is off but Windows Integrated Security is on.
    ASP.NET Version:2.0.50727.3082
    Web.config is healthy and is listed below.
    Other pages in the application which are not depenent on C.R load and run perfectly.
    I don't know what else to check
    thanks for you help
    jeff
    Web.Config Entries related to CR ***********
    <compilation debug="true">
    <assemblies>
    <add assembly="CrystalDecisions.Web, Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.Shared, Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.ReportSource, Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.Enterprise.Framework, Version=12.0.1100.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.Enterprise.Desktop.Report, Version=12.0.1100.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=12.0.1100.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.CrystalReports.Engine, Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.Enterprise.InfoStore, Version=12.0.1100.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.Enterprise.Viewing.ReportSource, Version=12.0.1100.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
    <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=12.0.1100.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
    </assemblies>
    <buildProviders>
    <add extension=".rpt" type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web, Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/></buildProviders>
    </compilation>
      ERROR DETAILS *****************
    [COMException (0x800001fb): Invalid file name.]
       CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
       CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +95
       CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +356
    [CrystalReportsException: Load report failed.]
       CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +418
       CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.get_ProductLocaleID() +31
       CrystalDecisions.ReportSource.CachedObjectReportSource.GetReport(RequestContext context, Boolean bAddToCacheWhenCreated) +474
       CrystalDecisions.ReportSource.CachedObjectReportSource.InternalGetReport(RequestContext context, Boolean bAddToCacheWhenCreated) +15
       CrystalDecisions.Web.CrystalReportSource.get_ReportDocument() +184
       CrystalReportPageTemplate.OnInit(EventArgs e) in

    I got a procmon log file and examined it. I have the file and I could also provide you with that or screenshots of it.
    There is nothing unusual about it. I can see entires in which CR has successfully opened the report and has cached in a c:\windows\temp.
    However there is one or two non-successful entries that may be related, especially that examining the stack trace brings us to a call to get_ProductLocaleID():
    - A call to read reg entry HKU\S-1-5-20\Software\Business Objects\Suite 12.0\Crystal Reports\Locale fails with NAME NOT FOUND.
    - immediately after that and from the same process (w3wp.ex) there is a call to open directory "c:\" which is logged as ACCESS DENIED.
    Any subsequent unsuccessful calls seem to be results of exception handling in the debug code.
    Does this point to any setup issues with CR? We always run the redistributable x86 runtime when installing it.

  • Compiling Media invalid file path error when buring a DVD

    Hello,
    I have updated to 3.0.2 Premiere Elements and the latest XP Home updates. I had 2.0 and it worked without any problems. I bought 3.0 and have had nothing but problems, I can capture, access files and put a video together but no matter if to file or to DVD I always get this error
    "Burn DVD Progress screen"
    "Compiling Media invalid file path"
    then it all stops and nothing.
    Any help or suggestions appreciated, I searched the web for this error and found nothing, when I search here I seem to get every Adobe product comes up but no premiere.
    Thank you

    I started to do the FAQ to build a clean AVI file. I also re-installed the program, did an update to 3.0.2, defrag. Made sure I had 118gig space. All in order. Still I got the errors. Then I thought perhaps since this pointed to a path that somewhere a path was not correct. So I looked under Preferences - scratch disks - and found they all pointed to the D drive where I had some old Adobe files. It appears the 2.0 version worked when I had the files stored on another partition and 3.0 did not like this. So when I moved everything in Scratch Disk to the same folder on C: where I installed 3.0 things seemed to begin to work.
    I tested it by burning to a file and then to an actual DVD and both worked well. I have a quad core chip.
    Now the problem seems to be when I edit each end of a clip, "the IN and OUT" the in does not seem to be saved or rendered. When I get to the preview I can still see and hear date prior to the SET IN. I save, re-save and re-render and it still happens. However some clips it works fine.
    Thanks again for pointing me in a direction so at least I can start to trouble shoot.

  • No mountable file system error when open dowloaded dmg

    I was provided a link to dowload Fireworks CS3 for Mac. The link allowed me to connect to the adobe ftp server and downloaded a 1.1MB dmg for Fireworks for Mac. However, when I attempt to open the file I get the following error: "The following disk images failed to mount, no mountable file systems". Note the file size seems too small for the full program, but I have downloaded it twice with no error messages on downloading and same file size.
    Previously posted under Fireworks but no responses....any ideas?

    You have an incomplete file. there is no way that a 1.1MB file could contain the app Fireworks. redownload the complete file and it will mount.

  • "File Corrupt" error when opening Driver software for OfficeJet 4500 G510n-z

    I'm trying to reinstall the software for my OfficeJet 4500 G510n-z printer and I have downloaded the drivers from the HP support site multiple times.  Each time I try to open the file I get an error of "File is Corrupt" and it stops opening.  I was able to eventually install the printer but not the HP Solution Software.
    I am running 64-bit Windows 7.
    As you can see below, I have the printer installed but not the Solution Center.  How can I add the Solution Center?

    What Anti virus software are you running? 
    Say thanks by clicking the Kudos Thumbs Up to the right in the post.
    If my post resolved your problem, please mark it as an Accepted Solution ...
    I worked for HP but now I'm retired!

  • "Invalid type library" error when opening Excel via ActiveX

    Hi,
    I am trying to open Excel via ActiveX (Automation open function), for
    instance by running the
    build in example "Open Excel and make visible". However, on some computers,
    I recieve the error code -2147319784 "Old format or invalid type library".
    The problem seems to be that LabView is unable to recognize the ActiveX
    control, as it does not appear in the list "Select ActiveX Class". It works
    perfecly from Matlab though, so the control seem to be in order. I have also
    tried reinstalling Office.
    On most computers it works perfectly, but three identical Dell P4 900Mhz
    have the same problem.
    /Stefan Borg

    This may be happening due to different Excel versions, a vi made to control Excel 97 won't work for Excel 2000 and vice-versa. Be sure you are using the correct activeX calls for each one.
    Good luck

  • Win32 exception error when opening file from RH6 in RH7

    I received the following error when opening a help file
    (.xpj) that was developed in RoboHelp 6 in RoboHelp 7:
    An unhandled win32 exception error occurred in RoboHTML.exe
    [4692].
    This occurred after receiving the notice to upgrade the
    project since it was created in an older version. After selecting
    Upgrade, I received a runtime error message prompt. After clicking
    OK, I received the message above.
    Does anyone know how to resolve this issue so that I can open
    the project without any problems in RH 7?

    Thanks a lot for replying.
    waldemar.hersacher wrote:
    I have Acrobat Reader 5.1 at home and 6 at work and both work fine with the LV 7.1.1 bookshelf and help file.
    Yep, I just uninstalled Adobe Reader 7.0 and installed version 6.0.1. The links now work perfectly, so evidently this is a problem with Adobe Reader 7.0. I'd still like to solve the problem, though, as I really like version 7.0. (Something has finally been done about the program's lengthy start-up time!)
    You can reach the PDF-Files also by using Help>>Search the LabVIEW Bookshelf. Does this link work for you?
    It works perfectly.
    javascript:AcrobatLink('../manuals/lvuser.pdf');
    This is a call to a java script function located in pdf.js.
    Other reasons:
    The Active-X control of Reader 7 has a bug.
    Your Internet security settings will not allow this operation. The Active-X will be loaded but will have no access to the file and yo get a wrong error message.
    Fair enough. If that is indeed the case, which Internet security setting should I try changing? I haven't done anything unusual to any of those settings. And where is pdf.js located? I tried searching for it but could not find it.
    Your advice is greatly apreciated.

  • Error when opening table container file keydb read only

    Hi Guys,
    We are installing solution manager 4.0 on windows/sql but we are getting following error and couldnt continue the installation
    FKD-00070  Error when opening table container file C:\PROGRA1\SAPINS1\SOLMAN\SYSTEM\MSS\CENTRAL\AS\keydb.xml for writing. Possible reason: "read-only"
    ERROR 2008-06-04 20:10:56.843
    FKD-00049  XML - Parser error: error: no DTD specified, can't validate in line 1, 1
    in file C:\Program Files\sapinst_instdir\SOLMAN\SYSTEM\MSS\CENTRAL\AS\keydb.xml.
    Please help
    Regards,
    Santosh

    Further info
    keydb.xml is empty and the directory has got write access for everyone
    regards
    Edited by: Santosh Keerti on Jun 4, 2008 1:29 PM

  • Error when opening file; see image for details

    I receive the following error when opening an ai file that was emailed to me.

    sk the sender to ZIP the file before sending and then send again.

  • Error when opening itunes : iTunes has stopped working ''A problem caused the program to stop working correctly''. When I repaired damaged files the problem still exists and also after uninstalling and redownloading and installing itunes. I have windows 8

    Error when opening iTunes : iTunes has stopped working '' A problem caused the program to stop working correctly''.
    When I repaired damaged files the problem still exists and also after uninstalling, redownloading and reinstalling iTunes.
    My pc is working with windos 8.
    Is there a solution?

    Hey there Rodney274,
    It sounds like you are getting an error from iTunes when you launch it. I would try the troubleshooting in this article named:
    iTunes for Windows Vista, Windows 7, or Windows 8: Fix unexpected quits or launch issues
    http://support.apple.com/kb/ts1717
    Start with troubleshooting for 3rd party plug ins section, then the rest of the article if needed:
    Start iTunes in Safe Mode
    Open iTunes in Safe Mode to isolate any interference from plug-ins or scripts not manufactured by Apple.
    Hold down Shift–Control while opening iTunes. You should see a dialog that says "iTunes is running in safe mode" before iTunes finishes starting up.
    Click Continue.
    See if the issue you're experiencing persists in Safe Mode.
    If you have the same issue while iTunes is in Safe Mode, proceed to the "Create a new user account" section. If you don't experience the same issue, follow these steps to remove third-party plug-ins.
    Thank you for using Apple Support Communities.
    Take care,
    Sterling

  • FM GUI_UPLOAD gives PC036 "Error when opening the download file".

    Dear all
    I'm having a problem with a particular PC.
    A program which calls FM GUI_UPLOAD gives the error PC036 "Error when opening the download file".
    The file we are trying to upload is a text file, with tab delimiter.
    If the same user executes the same program from another PCs, it works fine.
    If another user executes the program in the "problematic" PC, it gives the error.
    So, the problem is PC-related.
    I checked SAP GUI Codepage, and was the same as other PCs.
    I cheched regional configuration, and was also the same as other PCs.
    The operating  system is Windows XP, and the SAP GUI version is 7.10,  File version 7100.2.7.3077, Build 967944 , Patch level 7.
    SAP version is ECC6.
    I searched across forums, SAP note, and the web, but I couldn't find anything.
    I would be grateful if someone could give me ideas.
    Thanks in advance
    Jordi

    Hello. The user accounts are have same privilegies (like both are "Power users")? Also the file system are the same in both PC NTFS or FAT32 (today i'm find FAT32 in enterprise ) If NTFS may be some Domain politics are not allow to save file correctly, or space are not enough....Try check this first...Regards.

  • Multiple JavaScript errors when opening aspx file in Dreamweaver

    I get multiple javascript errors when opening aspx file in Dreamweaver similar to... "While executing translateHyperLink in ExternalRenderers.htm, a JavaScript error occurred."

    Hi Steven,
    Not sure if this is related, but can  you try the solutions in Troubleshoot JavaScript errors | Dreamweaver CS4, CS5, CS5.5, CS6
    Thanks,
    Preran

  • Error when opening report in Excel

    Hi all,
    I'm trying to import an answer (which I made in OBI) to an Excel via sheet (Via the OBI office plugin).
    So what I do is:
    - I navigate to the report I want to open
    - I expand the report so I can see all the views
    - I double click the view I want to open
    After doing this, I get following error:
    Error while opening workbook. Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
    Can any of you help me with this issue?
    Thank you very much

    Hi Srini,
    Thanks for your reply, but -for the benefit of other readers- after some research we found that this issue seems to be caused by a Microsoft Office BUG, which is listed on their support website as Article ID 320369 ( BUG: "Old format or invalid type library" error when automating Excel )
    The URL to access this article is: http://support.microsoft.com/kb/320369
    Cheers!!

Maybe you are looking for

  • How do I remove an e-mail account from my Nokia e-...

    On my Nokia 5230 I'm using the Nokia e-mail client: http://store.ovi.com/content/8794 . This works fine for me. Yesterday I encountered a little proplem which I cannot resolve so far. I want to remove an e-mail account from my account list and I can

  • Is a certain MAC recognizable by unwanted cookies, regardless of IP?

    Hi folks, I have been searching the web but I can´t seem to find a definitive answer to this quick question: If I visit a certain website (say a forum, like this) they most certainly log the I.P etc. But I hear all kind of horror stories that certain

  • Cant read my sky e-mails on firefox browser ?????.

    can only read the headline on an e-mail, cant open it

  • Error 40102 creating a record

    Hi, this is 'my scenario'. In a Form I have created 2 blocks; the first is a data block with 15 rows and scroll bar, populated from a table. The second block is a toolbar with button save, new, prev etc. In the button New i have a trigger WHEN-BUTTON

  • HTMLDB version 1.5

    hello! I've heard of the new version 1.5 of HTMLDB. I'd like to know what improvements/enhancements have been done on this new version. Thank you very much and congratulations, it's a great product!