Report w/ multiple worksheets

Has anyone worked with (jsp) report with excel output with 2 or more worksheets? Any help appreciated.
Thx!

Thanks both.
I've figured out the problem I was having with getting the bind variables correct in the Data Template (repeated column aliases across the 3 queries, tisk, tisk), so I think I'm good there.
I was afraid that was the case, Rainer. Boy, if that feature was there, we could really make some pretty impressive Excel-template reports. But, if we're limited to a single, flat data source that's really pretty limiting.
Mr. Dexter: any chance we could get that added to a requested feature list?
Matt.

Similar Messages

  • Upload data from multiple worksheets of excel file into SAP by using MIME?

    Hi all,
    I'm trying to getting the data from a multiple worksheet excel file by usin the MIME Repository.
    First of all i realizied it like [here|http://abap-explorer.blogspot.com/2008/12/upload-data-from-multiple-worksheets-of.html] in a normal ABAP Report.
    By trying to transfer the code to a WebDynpro Component, i get problems.
    With this part of code, because ActiveX is not allowed in our Webbrowser. So i have to find another solution to get the data from the excel file.
    CALL METHOD c_oi_container_control_creator=>get_container_control
    IMPORTING
    control = iref_control
    error   = iref_error
    I tried to rebuild this solution in webdynpro. But it dont works.
    So my next step was trying to Read the Excel sheet directly from MIME by getting the Content (XString).
    But there is no useful information Just a mix out of '######' and other symbols.
    By converting it into String the same problem.
    Maybe someone has an idea how to rebuild [this code|http://abap-explorer.blogspot.com/2008/12/upload-data-from-multiple-worksheets-of.html] in Webdynpro that it works correctly.
    Currently Im Using the Fileupload UI Element. All Works fine. I can Upload the Excel file to MIME Repository and i can open it from there.
    But i cant get the same clear informationen from the file, to write it later in a Database, like before without webdynpro.
    i hope someone can help me.
    Edited by: Sascha Baumann on Apr 20, 2009 4:28 PM

    You can't read the native binary Excel Format in server side ABAP.  The functions and classes that did this in Classic Dynpro used OLE Automation via the SAPGUI Control Framework to remotely control Excel to read the data.  Because in the browser you have no connection to the SAPGUI or are sandboxed inside the browser; the same functionality is not possible. 
    I would suggest that you look into saving the Excel file as a open, text format.  You might be able to use XML (although the Excel XML format can be complex) to support multiple sheets. You would have to build the logic yourself (using XSLT or the iXML parser) to process the XML format back into ABAP data.

  • Extract program to extract data from SAP into multiple worksheets of excel

    Hi , I am currently facing an issue.
    Extracting the data during data extraction, conversion into an excel and also into multiple worksheets withing a excel file.
    What is the function which can help me. Also how do you give refernce to multiple worksheets to be created withing a excel file (which is the destination)
    Any sample program extracting data from SAP tables into a excel with multiple worksheet will be of immense help
    Please respond. Appreciate it.
    Rgds
    Madhu

    Hi Madhu,
    Here is the program for creating the excel file and creating the multiple worksheets.
    *& Report  ZEXCEL_UPLOAD2
    REPORT  ZEXCEL_UPLOAD2.
    INCLUDE ole2incl.
    DATA: application TYPE ole2_object,
           workbook TYPE ole2_object,
           sheet TYPE ole2_object,
           cells TYPE ole2_object.
    CONSTANTS: row_max TYPE i VALUE 256.
    DATA index TYPE i.
    DATA: BEGIN OF itab1 OCCURS 0, first_name(10), END OF itab1.
    DATA: BEGIN OF itab2 OCCURS 0, last_name(10), END OF itab2.
    DATA: BEGIN OF itab3 OCCURS 0, formula(50), END OF itab3.
    *START-OF-SELECTION
    START-OF-SELECTION.
      APPEND: 'Peter' TO itab1, 'Ivanov' TO itab2,
                                  '=Sheet1!A1 & " " & Sheet2!A1' TO itab3,
                'John' TO itab1, 'Smith' TO itab2,
                                  '=Sheet1!A2 & " " & Sheet2!A2' TO itab3.
      CREATE OBJECT application 'excel.application'.
      SET PROPERTY OF application 'visible' = 0.
      CALL METHOD OF application 'Workbooks' = workbook.
      CALL METHOD OF workbook 'Add'.
    Create first Excel Sheet
      CALL METHOD OF application 'Worksheets' = sheet
                                   EXPORTING #1 = 1.
      CALL METHOD OF sheet 'Activate'.
      SET PROPERTY OF sheet 'Name' = 'Sheet1'.
      LOOP AT itab1.
        index = row_max * ( sy-tabix - 1 ) + 1. " 1 - column name
        CALL METHOD OF sheet 'Cells' = cells EXPORTING #1 = index.
        SET PROPERTY OF cells 'Value' = itab1-first_name.
      ENDLOOP.
    Create second Excel sheet
      CALL METHOD OF application 'Worksheets' = sheet
                                   EXPORTING #1 = 2.
      SET PROPERTY OF sheet 'Name' = 'Sheet2'.
      CALL METHOD OF sheet 'Activate'.
      LOOP AT itab2.
        index = row_max * ( sy-tabix - 1 ) + 1. " 1 - column name
        CALL METHOD OF sheet 'Cells' = cells EXPORTING #1 = index.
        SET PROPERTY OF cells 'Value' = itab2-last_name.
      ENDLOOP.
    Create third Excel sheet
      CALL METHOD OF application 'Worksheets' = sheet
                                   EXPORTING #1 = 3.
      SET PROPERTY OF sheet 'Name' = 'Sheet3'.
      CALL METHOD OF sheet 'Activate'.
      LOOP AT itab3.
        index = row_max * ( sy-tabix - 1 ) + 1. " 1 - column name
        CALL METHOD OF sheet 'Cells' = cells EXPORTING #1 = index.
        SET PROPERTY OF cells 'Formula' = itab3-formula.
        SET PROPERTY OF cells 'Value' = itab3-formula.
      ENDLOOP.
    Save excel speadsheet to particular filename
      CALL METHOD OF sheet 'SaveAs'
                      EXPORTING #1 = 'c:\temp\exceldoc1.xls'     "filename
                                #2 = 1.                          "fileFormat
    Closes excel window, data is lost if not saved
    SET PROPERTY OF application 'visible' = 0.
    **Quick guide to some of the OLE statements for OLE processing in this program as well as a few other ones.
    Save Excel speadsheet to particular filename
    CALL METHOD OF sheet 'SaveAs'
                    EXPORTING #1 = 'C:\Users\dprasad\Desktop\excel_sheet.xls'     "filename
                              #2 = 1.                          "fileFormat
    Save Excel document
    CALL METHOD OF sheet 'SAVE'.
    Quits out of Excel document
    CALL METHOD OF sheet 'QUIT'.
    Closes visible Excel window, data is lost if not saved
    SET PROPERTY OF application 'visible' = 0.

  • How to open multiple worksheet by redirecting discoverer plus URL ?

    Hi,
    Version : Discoverer Plus 11g
    I am able to open discoverer report with report workbook and worksheet from my UI screen by redirecting its URL.
    This is done by providing URL input parameter opendbid (workbook id) & sheetid (worksheet id of the workbook).
    http://host:port/discoverer/plus?cn=<+cnname+>&opendb=<+reportname+>&opendbid=<+workbookid+>&sheetid=<+worksheetid+>
    Now I have two reports in which there are two worksheets generated in single workbook.
    I want to open this report also by redirecting above URL from my UI screen so what I have to pass in worksheet id for multiple worksheets.
    regards,
    devang

    Hi,
    You cannot do this. You open only one sheet at a time from a URL.
    Rod West

  • MULTIPLE WORKSHEETS PER EXCEL WORKBOOK USING XSLT

    Hi everybody,
    My query is on how multiple worksheets per excel file can be created using xslt programming.
    From my report program i call the xslt transformation passing an internal table. Based on the changes in the values of a particular field in the table, multiple worksheets are to be created in a single excel file.
    A snippet of the code ive generated is displayed below .But i get the error saying its unable to open the file. I need to know where exactly to place the <for-each select> and <worksheet> statements in order to successfully implement the solution. Would greatly appreciate any help offerred in this direction. Thanks
    <xsl:template match="/">
    <workbook>
    <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
          </ExcelWorkbook>
            <xsl:apply-templates />
    </Workbook>
    </xsl:template>
    <xsl:template match="asx:values">
    <xsl:for-each select="ROWS/ZWORKSHEET">
    <Worksheet ss:Name="FIRSTCOL">
      <Table ss:ExpandedColumnCount="10" x:FullColumns="1"
       x:FullRows="1" ss:DefaultColumnWidth="66" ss:DefaultRowHeight="14.25">
        <Row xmlns="urn:schemas-microsoft-com:office:spreadsheet"
             xmlns:o="urn:schemas-microsoft-com:office:office"
             xmlns:x="urn:schemas-microsoft-com:office:excel"
             xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
             xmlns:html="http://www.w3.org/TR/REC-html40">
          <Cell ss:StyleID="s23"><Data ss:Type="String">SAP Material Number</Data></Cell>
          <Cell ss:StyleID="s23"><Data ss:Type="String">CLP</Data></Cell>
        </Row>
      </Table>
      </Worksheet>
    </xsl:for-each>
    </xsl:template>
    </xsl:transform>

    If the Sales Org values are static, you shold be able to create a variant.  Don't know off what the variable name is off the top of my head, but there should be a variable delivered as part of business content that obtains the current month - look at the 0CALMONTH variables. (May be something like 0CMONTH ?)If you don't see it, maybe that variable activated yet.
    Does just one person run this workbook or are many people?
    If you schedule the query with reporting agent, you should be able to warmup (load the results)to the OLAP cache so when the user runs the querys later, they'll run very quickly, retrieving the data from the OLAP cache.  BEx Broadcaster is a good option too if the criteria for the queries are all known upfront.
    Message was edited by: Pizzaman
    Fogo to ask - are you using hierarchies in the query?  They can have a lot of perfromance impacts on the front end interms of rendering them in Excel.  There are some Front End patches that speed this up quite a bit.

  • One Excel , Multiple Worksheets

    Hello,
    I have a requirement to read the excelsheet having multiple worksheets.
    The excel will have sheet1, sheet2, sheet3 etc with data and I have to read all of them.
    I searched a lot on SDN and fould the below code which is reading only the Active Sheet. Not all the sheets.
    Any idea how this could be achieved?
    I am pasting the code for your reference whici reads teh Active sheet.
    =======================
    *& Report  ZSCD_TEST16
    REPORT  ZSCD_TEST16.
    Define Screen Container
    DATA: obj_container TYPE REF TO cl_gui_custom_container.
    DATA: o_error       TYPE REF TO i_oi_error,
          o_control     TYPE REF TO i_oi_container_control,
          o_document    TYPE REF TO i_oi_document_proxy,
          o_spreadsheet TYPE REF TO i_oi_spreadsheet,
          o_sheetname TYPE SOI_SHEETS_TABLE.
    Data declarations.
    DATA: t_files       TYPE filetable,
          s_files       TYPE file_table,
          v_doc_name    TYPE char256,
          v_changed     TYPE int4,
          v_rcode       TYPE int4,
          t_ranges      TYPE soi_range_list,
          s_ranges      TYPE soi_range_item,
          t_data        TYPE soi_generic_table,
          s_data        TYPE soi_generic_item,
          v_action      TYPE int4.
    Initialization event.
    INITIALIZATION.
    CLASS c_oi_errors DEFINITION LOAD.
    Create Instance control for container
      CALL METHOD c_oi_container_control_creator=>get_container_control
           IMPORTING control = o_control
                     error   = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Create generic container linked to container in screen 100
      CREATE OBJECT obj_container
        EXPORTING
         container_name               = 'CONTAINER'
        EXCEPTIONS
         cntl_error                  = 1
         cntl_system_error           = 2
         create_error                = 3
         lifetime_error              = 4
         lifetime_dynpro_dynpro_link = 5
         others                      = 6.
      IF sy-subrc <> 0.
        MESSAGE e208(00) WITH 'Error creating container'.
      ENDIF.
    Establish connection to GUI Control
      CALL METHOD o_control->init_control
          EXPORTING r3_application_name = 'Excel Document Container'
                     inplace_enabled     = 'X'
                     parent              = obj_container
           IMPORTING error               = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Create Document Proxy
      CALL METHOD o_control->get_document_proxy
           EXPORTING document_type   = soi_doctype_excel_sheet
           IMPORTING document_proxy  = o_document
                     error           = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Start-of-selection.
    START-OF-SELECTION.
    Call dialog to navigate to file
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
         EXPORTING
           default_extension       = '.xls'
           file_filter             = '*.xls'
           initial_directory       = 'C:\'
        CHANGING
           file_table              = t_files
           rc                      = v_rcode
           user_action             = v_action
        EXCEPTIONS
           file_open_dialog_failed = 1
           cntl_error              = 2
           error_no_gui            = 3
           OTHERS                  = 4.
      IF sy-subrc <> 0.
        MESSAGE e208(00) WITH 'FILE_OPEN_DIALOG'.
      ENDIF.
    Only continue if User hasn't cancelled
      CHECK: v_action = 0.
    Determine filename to open Excel document
      READ TABLE t_files INDEX 1 INTO s_files.
      IF sy-subrc = 0.
        CONCATENATE 'FILE://' s_files-filename INTO v_doc_name.
      ELSE.
        MESSAGE e208(00).
      ENDIF.  "sy-subrc = 0
    Open Spreadsheet in SAPWORKDIR
      CALL METHOD o_document->open_document
           EXPORTING open_inplace     = 'X'
                     document_title   = 'Excel'
                     document_url     = v_doc_name
                     no_flush         = ''
           IMPORTING error            = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Open Spreadsheet interface
      CALL METHOD o_document->get_spreadsheet_interface
           EXPORTING no_flush        = 'X'
           IMPORTING sheet_interface = o_spreadsheet
                     error           = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Set selection for 1000 rows
      CALL METHOD o_spreadsheet->set_selection
                   EXPORTING top   = 1
                             left  = 1
                             rows  = '10'
                             columns = '10'
                             UPDATING = '-1'.
    Define Range in spreadsheet
      CALL METHOD o_spreadsheet->insert_range
             EXPORTING name      = 'Sheet2'
                       rows      = '10'
                       columns   = '20'
                       no_flush  = ''
             IMPORTING error     = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Define Range in spreadsheet
      CALL METHOD o_spreadsheet->GET_SHEETS
             EXPORTING no_flush  = ''
                       UPDATING = '-1'
             IMPORTING SHEETS     = o_sheetname.
      s_ranges-name    = 'Sheet2'.
      s_ranges-rows    = '10'.
      s_ranges-columns = '20'.
      APPEND s_ranges TO t_ranges.
    Get data
      CALL METHOD o_spreadsheet->get_ranges_data
             EXPORTING all       = '-1'
                       no_flush  = ' '
             IMPORTING contents  = t_data
                       error     = o_error
             CHANGING  ranges    = t_ranges.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Close document
    Close the document
      CALL METHOD o_document->close_document
             EXPORTING do_save     = ''
                       no_flush    = ''
             IMPORTING has_changed = v_changed
                       error       = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Clear Document Resources
      CALL METHOD o_document->release_document
             EXPORTING no_flush = ''
             IMPORTING error    = o_error.
      IF o_error->has_failed = 'X'.
        CALL METHOD o_error->raise_message
             EXPORTING type = 'E'.
      ENDIF.
    Clear table of file names
      FREE: t_files,
            o_control.
    Display the data
      LOOP AT t_data INTO s_data.
        AT NEW row.
          SKIP.
        ENDAT.
        WRITE:(10) s_data-value.
      ENDLOOP.
    ========================
    Thanks in advance.
    reagrds,

    Try this Links
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/abap-UploaddatafromExceltoSapusing+OO
    How to read the data from different TABs(sheet1,sheet2..) in the Excel file
    How to send data  to different tabs of an excel sheet?
    into excel sheet with multiple tabs

  • Dynamic Template report on multiple tab

    Hi
    I am trying to develop reports using dynamic template .Now I  want  another  template on another Tab ( work sheet ) on same work book .Can any body suggest me how to do it ?
    Let me explain in  another way. I want multiple template reports on multiple tab of same work book.When I go to next new blank sheet , I don't get reporting option on action pane.
    Thanks
    SN

    Perhaps you could solve this using existing Excel functionality as follows:
    Right click on the worksheet name of the sheet with the existing report (eg. Trend)
    Select Move or Copy
    Choose the Create a Copy check box
    Click OK
    if building an EVDRE on the new sheet, you could type =EVDRE() then click on the Refresh Workbook button in the BPC toolbar.

  • Excel Upload With Multiple Worksheets

    Friends,
    I have requirement wherein I have to read data from an excel file with multiple worksheets. I have gone through some earlier postings but most of them explain about creating an excel file with multiple worksheets (which is right oppsite of what I need to do)
    I am trying to understand the concept of OLE and implement it but am finding it tricky!
    Please help me out!
    Thanks,
    Shyam

    See this site: AN EASY REFERENCE FOR OLE AUTOMATION by Serder Simsekler.
    Best!
    Jim

  • Excel download with multiple worksheets using ABAP webdynpro

    Content of Internal table should to downloaded  to an excel sheet with multiple worksheet.

    Excel doesn't support multiple worksheets with the text tab delimited or any of the other plain text formats.  So if you need multiple worksheets those approaches are out.  Multiple worksheets would only work with the Excel native format or the XML based format.  From ABAP the best approach would be to create the XML Excel format.  Search the forms and wiki has there has been tons of discussion in the mast on the XML Excel format.

  • Report Using Multiple Select

    hi
    I want to display a report with Multiple Select List like
    http://apex.oracle.com/pls/apex/f?p=267:16:
    Thanks
    Edited by: 805629 on Jan 6, 2011 9:28 PM

    Did you ever get this answered???
    This is exactly what I am looking for!

  • Report with multiple Detail Area

    Hi All,
    Please see the Report pointed to the link below:
    [Report with multiple Detail Area|http://us.share.geocities.com/felix5ac/fairway.jpg]
    Some Explanations:
    ========================
    (1) The line with "ABCDEFGH..." is variable data coming from the database in the Detail Area
    (2) The lines with "WBLNX'" "123, 123.12", 
                             "WBLNX'"
       are variable data associated with the same Heading: "ABCDEFGH..."
    (2b) There can be multiple lines of data in the detail area (i.e. 1 or more "ABCDEFGH..." and the associated WBLNX and numbers...)
    (3) Item Code Descriptions ==> is a Header Info
    (4) ARL ... and FPHI... ==> are variable data and lines in these area can be 1 line; it can be 4 lines; it can be 10 lines...
    (5) Lines FROM "Artwork Procedures..." to the the end of the page are static.
    QUESTION:
    ===================
    How do I best design these Report with the multiple detail areas? Again, please see link of the Report above...
    Thanks and Best regards,
    Felix

    Hi Felix
    You can place the less detailed fields in the regular sections of the report and wherever you require multiple lines you can use the subreports.
    Hope this helps.
    Regards
    Nikhil

  • Report from multiple subject areas

    Hi,
    I need to create a report from multiple subject areas. I am not sure whether it;s possible in OBIEE answers.
    Is there any other tool from OBIEE suite where I can design it?
    Thanks

    Yes, i can see datatype and number of columns is same in both queries.
    i have challanges to copy message but Error message seems to general. Error says (near to FROM) and I checked there are three FROM in query and all seems to be ok
    Query is something like as below
    select SA1.col1 saw_0,
    SA1.col2 saw_1,
    SA2.col1 saw_2,
    SA2.col2 saw_3,
    FROM
    (select col1 saw_0, col2 saw_1 from "subject area1") SA1
    FULL OUTER JOIN
    (select col1 saw_0, col2 saw_1 from "subject area2") SA2
    ON SA1.col1 = SA2.col1
    I can't see any issue in the query...please comment.

  • OBIEE report from multiple facts at different levels

    Currently we need to develop a report with columns from 3 different facts surrounded with conformed and non conformed dimensions at different levels.
    After setting the hierarchial levels and putting the facts into single logical table with different sources OBIEE is generating 2 different queries and does a full outer join.
    I would like to know how we can do a left outer join instead of full outer join between the 2 queries based on a common column?
    Thanks in advance.

    Hi Vinod,
    The scenario provided in the link above doesnt match to my issue.
    We need to develop a report from multiple fact tables at different levels with conformed & non conformed dimension columns.
    I have 7 dimensions D1, D2, D3, D4, D5, D6 and D7 & two fact F1 and F2 tables.
    F1 is tied to dimensions D1,D2,D3,D4,d5
    F2 is tied to dimensions D3,D4,D5, D6 and D7.
    In my report I have columns from D1, D2, D3, D4, D5, D6, D7, F1 and F2.
    So OBIEE generates 2 queries with columns from D1,D2,D3,D4,d5 & F1 measure and another query with D3,D4,D5, D6, D7 and F2 measure.
    and then does a cross fact join out of box between 2 queries.
    But I need to do a left outer join between the 2 queries on a common column instead of cross fact join. I would like to know how we can achive this.
    Thanks.

  • C# Script to open and read an Excel spreadsheet with multiple worksheets

    Can someone provide me the C# syntax and Edit Script to open an Excel spreadsheet with multiple worksheets and then using the data to create and output a .csv file? The multiple worksheets contain different data elements that I'll need to parse out and then
    store as a .csv file that will then be read to pump data into our SQL Server Database.
    Thanks for your review and am hopeful for a reply.
    PSULionRP

    I think this code originally came from Joel, who comes here quite a bit.  I'm not a C# expert, like Joe is, but I think this is pretty close to what you want.
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Excel = Microsoft.Office.Interop.Excel;
    using Microsoft.Office.Interop.Excel;
    using System.IO;
    namespace WindowsFormsApplication2
    public partial class Form1 : Form
    public Form1()
    InitializeComponent();
    private void button1_Click(object sender, EventArgs e)
    Main();
    public void Main()
    string filePath = "C:\\Users\\Ryan\\Desktop\\MainExcel.xlsx";
    Microsoft.Office.Interop.Excel.Application xlobj = new Microsoft.Office.Interop.Excel.Application();
    Workbook w = default(Workbook);
    Workbook w1 = default(Workbook);
    Worksheet s = default(Worksheet);
    Worksheet s1 = default(Worksheet);
    Worksheet xlsht = default(Worksheet);
    xlobj.Visible = true;
    int intItem = 1;
    DirectoryInfo dirSrc = new DirectoryInfo(@"C:\Users\Ryan\Desktop\Test_Folder\");
    foreach (FileInfo ChildFile in dirSrc.GetFiles())
    try
    // Renaming the excel sheet
    w = xlobj.Workbooks._Open(ChildFile.FullName,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing);
    w1 = xlobj.Workbooks._Open(filePath,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    Type.Missing, Type.Missing);
    //this doesn't make any sense
    //w1 = xlobj.Workbooks.Open(filePath);
    //if (intItem > 3)
    Excel.Worksheet lastSht =
    (Excel.Worksheet)w1.Worksheets[w1.Worksheets.Count];
    xlsht = (Excel.Worksheet)w1.Worksheets.Add(Type.Missing,
    lastSht,
    Type.Missing, Type.Missing);
    s = (Excel.Worksheet)w.Worksheets[1];
    s1 = (Excel.Worksheet)w1.Worksheets[intItem];
    s1.Name = ChildFile.Name;
    // it will copy and paste sheet from one to another with formula
    s.UsedRange.Copy(Type.Missing);
    Excel.Range r = s1.get_Range("A1", Type.Missing);
    r.PasteSpecial(Excel.XlPasteType.xlPasteValues,
    Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
    Type.Missing, Type.Missing);
    s1.UsedRange.Formula = s.UsedRange.Formula;
    // Renaming the excel sheet
    //w.Save();
    w.Close(false, Type.Missing, Type.Missing);
    w1.Close(false, Type.Missing, Type.Missing);
    catch (Exception ex)
    //w.Save();
    w1.Save();
    w.Close(false, Type.Missing, Type.Missing);
    w1.Close(false, Type.Missing, Type.Missing);
    intItem = intItem + 1;
    //Dts.TaskResult = ScriptResults.Success
    Do you need help getting everything into a CSV, or can you take it from here???
    Knowledge is the only thing that I can give you, and still retain, and we are both better off for it.

  • Bursting a report with multiple queries

    Hi,
    I need to set-up bursting in BIP for a report with multiple queries. The output format is pdf and delivery is through e-mail. Since the queries need to be linked, I'm trying to do this using data template. I've set-up split and burst based on a field (store_id) from the first query which is used as a bind variable in the subsequent queries. So I'd ideally want the report to be split based on store_id. The report works fine if I use a parameter for store_id and view the output by store_id. When I try to schedule the report for bursting, it generates and e-mails the reports but only the last report appears to have correct data output while the others have only the output from the first query (and all other queries appear to return nothing in the report).
    Any suggestions on what could be the issue here? Thanks!
    Here is the data template for the report:
    <dataTemplate name="Report" description="Report" dataSourceRef="ReportDB">
    <dataQuery>
    <sqlStatement name="STORE_VENDOR">
    <![CDATA[SELECT STORE.STORE_ID Q1_STORE_ID, VENDOR.VENDOR_ID Q1_VENDOR_ID, VENDOR.VENDOR_DESC Q1_VENDOR_DESC, PERSON.NAME Q1_NAME
                   FROM STORE, SERVICE_TICKET, VENDOR, ROLE, ROLE_TYPE, PERSON, PERIOD PERIOD_FROM, PERIOD PERIOD_TO
                   WHERE (SERVICE_TICKET.SOURCE_ID = STORE.SOURCE_ID AND SERVICE_TICKET.STORE_ID = STORE.STORE_ID)
                   AND (SERVICE_TICKET.SOURCE_ID = VENDOR.SOURCE_ID AND SERVICE_TICKET.VENDOR_ID = VENDOR.VENDOR_ID)
                   AND (STORE.SOURCE_ID = ROLE.SOURCE_ID AND STORE.STORE_ID = ROLE.STORE_ID)
                   AND (ROLE.SOURCE_ID = ROLE_TYPE.SOURCE_ID AND ROLE.ROLE_TYPE_ID = ROLE_TYPE.TYPE_ID AND ROLE_TYPE.TYPE_DESC = 'PIC')
                   AND (ROLE.SOURCE_ID = PERSON.SOURCE_ID AND ROLE.PERSON_ID = PERSON.PERSON_ID)
                   AND SERVICE_TICKET.START_DATE BETWEEN PERIOD_FROM.START_DATE AND PERIOD_TO.END_DATE
                   AND PERIOD_FROM.PERIOD_DESC = 'Cal Week 1'
                   AND PERIOD_TO.PERIOD_DESC = 'Cal Week 4'
                   GROUP BY STORE.STORE_ID, VENDOR.VENDOR_ID, VENDOR.VENDOR_DESC, PERSON.NAME
                   ORDER BY STORE.STORE_ID]]>
    </sqlStatement>
    <sqlStatement name="WO">
    <![CDATA[SELECT STORE.STORE_ID Q3_STORE_ID, 'Nightly Cleaning' Q3_NIGHTLY_CLEANING, 'Nightly Cleaning' Q3_DESCRIPTION, SERVICE_TICKET.TICKET_ID Q3_TICKET_ID, TO_CHAR(SERVICE_TICKET.END_DATE, 'MM/DD/YYYY') Q3_END_DATE, 'Excellent' Q3_QUALITY_RATING_1, 'Satisfactory' Q3_QUALITY_RATING_2, 'Unsatisfactory' Q3_QUALITY_RATING_3
                   FROM SERVICE_TICKET, STORE, PERIOD PERIOD_FROM, PERIOD PERIOD_TO
                   WHERE (SERVICE_TICKET.SOURCE_ID = STORE.SOURCE_ID AND SERVICE_TICKET.STORE_ID = STORE.STORE_ID)
                   AND SERVICE_TICKET.START_DATE BETWEEN PERIOD_FROM.START_DATE AND PERIOD_TO.END_DATE
                   AND STORE.STORE_ID = :Q1_STORE_ID
                   AND PERIOD_FROM.PERIOD_DESC = 'Cal Week 1'
                   AND PERIOD_TO.PERIOD_DESC = 'Cal Week 4']]>
    </sqlStatement>
    <sqlStatement name="SERVC_TYPE_1">
    <![CDATA[SELECT STORE.STORE_ID Q4_STORE_ID, ZONE.ZONE_DESC Q4_ZONE_DESC, SERVICE_TICKET_LINE.SERVICE_COST Q4_SERVICE_COST, SERVICE_TICKET_LINE.TICKET_ID Q4_TICKET_ID, TO_CHAR(SERVICE_TICKET_LINE.WO_END_DATE, 'MM/DD/YYYY') Q4_WO_END_DATE, 'Excellent' Q4_QUALITY_RATING_1, 'Satisfactory' Q4_QUALITY_RATING_2, 'Unsatisfactory' Q4_QUALITY_RATING_3
                   FROM SERVICE_TICKET_LINE, SERVICE_TICKET, STORE, SERVICE_TYPE, ZONE, PERIOD PERIOD_FROM, PERIOD PERIOD_TO
                   WHERE (SERVICE_TICKET.SOURCE_ID = SERVICE_TICKET_LINE.SOURCE_ID AND SERVICE_TICKET.TICKET_ID = SERVICE_TICKET_LINE.TICKET_ID)
                   AND (SERVICE_TICKET.SOURCE_ID = STORE.SOURCE_ID AND SERVICE_TICKET.STORE_ID = STORE.STORE_ID)
                   AND (SERVICE_TICKET_LINE.SOURCE_ID = SERVICE_TYPE.SOURCE_ID AND SERVICE_TICKET_LINE.SERVICE_TYPE_ID = SERVICE_TYPE.TYPE_ID)
                   AND (SERVICE_TICKET_LINE.SOURCE_ID = ZONE.SOURCE_ID AND SERVICE_TICKET_LINE.ZONE_ID = ZONE.ZONE_ID)
                   AND SERVICE_TYPE.TYPE_DESC = 'ABC'
                   AND SERVICE_TICKET.START_DATE BETWEEN PERIOD_FROM.START_DATE AND PERIOD_TO.END_DATE
                   AND STORE.STORE_ID = :Q1_STORE_ID
                   AND PERIOD_FROM.PERIOD_DESC = 'Cal Week 1'
                   AND PERIOD_TO.PERIOD_DESC = 'Cal Week 4'
                   ORDER BY SERVICE_TICKET_LINE.SOURCE_ID, SERVICE_TICKET_LINE.TICKET_ID, SERVICE_TICKET_LINE.LINE_ID]]>
    </sqlStatement>
    <sqlStatement name="SERVC_TYPE_2">
    <![CDATA[SELECT STORE.STORE_ID Q5_STORE_ID, ZONE.ZONE_DESC Q5_ZONE_DESC, SERVICE_TICKET_LINE.SERVICE_COST Q5_SERVICE_COST, SERVICE_TICKET_LINE.TICKET_ID Q5_TICKET_ID, TO_CHAR(SERVICE_TICKET_LINE.WO_END_DATE, 'MM/DD/YYYY') Q5_WO_END_DATE, 'Excellent' Q5_QUALITY_RATING_1, 'Satisfactory' Q5_QUALITY_RATING_2, 'Unsatisfactory' Q5_QUALITY_RATING_3
                   FROM SERVICE_TICKET_LINE, SERVICE_TICKET, STORE, SERVICE_TYPE, ZONE, PERIOD PERIOD_FROM, PERIOD PERIOD_TO
                   WHERE (SERVICE_TICKET.SOURCE_ID = SERVICE_TICKET_LINE.SOURCE_ID AND SERVICE_TICKET.TICKET_ID = SERVICE_TICKET_LINE.TICKET_ID)
                   AND (SERVICE_TICKET.SOURCE_ID = STORE.SOURCE_ID AND SERVICE_TICKET.STORE_ID = STORE.STORE_ID)
                   AND (SERVICE_TICKET_LINE.SOURCE_ID = SERVICE_TYPE.SOURCE_ID AND SERVICE_TICKET_LINE.SERVICE_TYPE_ID = SERVICE_TYPE.TYPE_ID)
                   AND (SERVICE_TICKET_LINE.SOURCE_ID = ZONE.SOURCE_ID AND SERVICE_TICKET_LINE.ZONE_ID = ZONE.ZONE_ID)
                   AND SERVICE_TYPE.TYPE_DESC = 'XYZ'
                   AND SERVICE_TICKET.START_DATE BETWEEN PERIOD_FROM.START_DATE AND PERIOD_TO.END_DATE
                   AND STORE.STORE_ID = :Q1_STORE_ID
                   AND PERIOD_FROM.PERIOD_DESC = 'Cal Week 1'
                   AND PERIOD_TO.PERIOD_DESC = 'Cal Week 4'
                   ORDER BY SERVICE_TICKET_LINE.SOURCE_ID, SERVICE_TICKET_LINE.TICKET_ID, SERVICE_TICKET_LINE.LINE_ID]]>
    </sqlStatement>
    <sqlStatement name="SERVC_TYPE_3">
    <![CDATA[SELECT STORE.STORE_ID Q6_STORE_ID, ZONE.ZONE_DESC Q6_ZONE_DESC, 'Excellent' Q6_QUALITY_RATING_1, 'Satisfactory' Q6_QUALITY_RATING_2, 'Unsatisfactory' Q6_QUALITY_RATING_3, 'One' Q6_QTY_MISSING_1, 'Two' Q6_QTY_MISSING_2, '3 or More' Q6_QTY_MISSING_3
                   FROM SERVICE_TICKET_LINE, SERVICE_TICKET, STORE, SERVICE_TYPE, ZONE, PERIOD PERIOD_FROM, PERIOD PERIOD_TO
                   WHERE (SERVICE_TICKET.SOURCE_ID = SERVICE_TICKET_LINE.SOURCE_ID AND SERVICE_TICKET.TICKET_ID = SERVICE_TICKET_LINE.TICKET_ID)
                   AND (SERVICE_TICKET.SOURCE_ID = STORE.SOURCE_ID AND SERVICE_TICKET.STORE_ID = STORE.STORE_ID)
                   AND (SERVICE_TICKET_LINE.SOURCE_ID = SERVICE_TYPE.SOURCE_ID AND SERVICE_TICKET_LINE.SERVICE_TYPE_ID = SERVICE_TYPE.TYPE_ID)
                   AND (SERVICE_TICKET_LINE.SOURCE_ID = ZONE.SOURCE_ID AND SERVICE_TICKET_LINE.ZONE_ID = ZONE.ZONE_ID)
                   AND SERVICE_TYPE.TYPE_DESC = 'PQR'
                   AND SERVICE_TICKET.START_DATE BETWEEN PERIOD_FROM.START_DATE AND PERIOD_TO.END_DATE
                   AND STORE.STORE_ID = :Q1_STORE_ID
                   AND PERIOD_FROM.PERIOD_DESC = 'Cal Week 1'
                   AND PERIOD_TO.PERIOD_DESC = 'Cal Week 4'
                   ORDER BY SERVICE_TYPE.TYPE_ID]]>
    </sqlStatement>
    </dataQuery>
    <dataStructure>
         <group name="G_STORE_VENDOR" source="STORE_VENDOR">
              <element name="Q1_STORE_ID" value="Q1_STORE_ID"/>
              <element name="Q1_VENDOR_ID" value="Q1_VENDOR_ID"/>
              <element name="Q1_VENDOR_DESC" value="Q1_VENDOR_DESC"/>
              <element name="Q1_NAME" value="Q1_NAME"/>
         </group>     
         <group name="G_WO" source="WO">
              <element name="Q3_NIGHTLY_CLEANING" value="Q3_NIGHTLY_CLEANING"/>
              <element name="Q3_DESCRIPTION" value="Q3_DESCRIPTION"/>
              <element name="Q3_TICKET_ID" value="Q3_TICKET_ID"/>
              <element name="Q3_END_DATE" value="Q3_END_DATE"/>
              <element name="Q3_QUALITY_RATING_1" value="Q3_QUALITY_RATING_1"/>
              <element name="Q3_QUALITY_RATING_2" value="Q3_QUALITY_RATING_2"/>
              <element name="Q3_QUALITY_RATING_3" value="Q3_QUALITY_RATING_3"/>
         </group>     
         <group name="G_SERVC_TYPE_1" source="SERVC_TYPE_1">
              <element name="Q4_ZONE_DESC" value="Q4_ZONE_DESC"/>
              <element name="Q4_SERVICE_COST" value="Q4_SERVICE_COST"/>
              <element name="Q4_TICKET_ID" value="Q4_TICKET_ID"/>
              <element name="Q4_WO_END_DATE" value="Q4_WO_END_DATE"/>
              <element name="Q4_QUALITY_RATING_1" value="Q4_QUALITY_RATING_1"/>
              <element name="Q4_QUALITY_RATING_2" value="Q4_QUALITY_RATING_2"/>
              <element name="Q4_QUALITY_RATING_3" value="Q4_QUALITY_RATING_3"/>
         </group>     
         <group name="G_SERVC_TYPE_2" source="SERVC_TYPE_2">
              <element name="Q5_ZONE_DESC" value="Q5_ZONE_DESC"/>
              <element name="Q5_SERVICE_COST" value="Q5_SERVICE_COST"/>
              <element name="Q5_TICKET_ID" value="Q5_TICKET_ID"/>
              <element name="Q5_WO_END_DATE" value="Q5_WO_END_DATE"/>
              <element name="Q5_QUALITY_RATING_1" value="Q5_QUALITY_RATING_1"/>
              <element name="Q5_QUALITY_RATING_2" value="Q5_QUALITY_RATING_2"/>
              <element name="Q5_QUALITY_RATING_3" value="Q5_QUALITY_RATING_3"/>
         </group>     
         <group name="G_SERVC_TYPE_3" source="SERVC_TYPE_3">
              <element name="Q6_ZONE_DESC" value="Q6_ZONE_DESC"/>
              <element name="Q6_QUALITY_RATING_1" value="Q6_QUALITY_RATING_1"/>
              <element name="Q6_QUALITY_RATING_2" value="Q6_QUALITY_RATING_2"/>
              <element name="Q6_QUALITY_RATING_3" value="Q6_QUALITY_RATING_3"/>
              <element name="Q6_QTY_MISSING_1" value="Q6_QTY_MISSING_1"/>
              <element name="Q6_QTY_MISSING_2" value="Q6_QTY_MISSING_2"/>
              <element name="Q6_QTY_MISSING_3" value="Q6_QTY_MISSING_3"/>
         </group>
    </dataStructure>
    </dataTemplate>

    Hello user6428199,
    When you use ":Q1_STORE_ID" in your queries, BI Publisher looks for a report parameter named Q1_STORE_ID. Change all your report queries to get data for all the store_id's available. As you are bursting the report using the store_id as the bursting key, BI Publisher will split the report based on the stored_id and delivers content based on it. No matter how many queries you may have, BI Publisher will loop through all the store_id's available and all the queries will return data for that particular id in a report.
    Thanks,
    Machaan

Maybe you are looking for