Click here to Skip to main content
15,881,709 members
Articles / Programming Languages / C#
Article

OWC -Office Web Component v11.0 Print Functionality

Rate me:
Please Sign up or sign in to vote.
1.80/5 (3 votes)
20 May 2008CPOL 42.8K   458   14   4
This article describes, how to achieve print functionality for spreadsheet OWC Component.

Introduction

Image 1 Image 2

During development of an application we came across the situation where we need to print the content of OWC spreadsheet.So after doing some search and research we were successful in getting the solution for above problem. The code given below is self explanatory.The only disadvantage of this solution is that it render and save the content into html file. One can get rid of this mechanism by deleting this file after the print operation is completed.

Important Namespace

C#
using Microsoft.Office.Interop.Owc11;
using System.IO;

Using the code

There are two event :

  • 1.Call 'Save' event to store the XMLData of spreadsheet into hidden variable using javascript
  • 2.Call print event from code behind to print the OWC Spreadsheet content.

    Step1:Javascript-Save Event Function

    JavaScript
    function btnSave_Click()
     {
        var spreadsheet = document.getElementById("sp");
        document.getElementById('<%= hdnXML.ClientID %>').value=spreadsheet.XMLData;
        return false;
     }
    

    Step2 :ASPX

    Note include validateRequest=false in the page directive of aspx page.

    XML
    <body>
        <form id="form1" runat="server">
        <div>
        <h1>OWC Print Functionality </h1>
        <hr width=1px />
        <object classid="clsid:0002E559-0000-0000-C000-000000000046" id="sp" width="100%"
                        height="80%"><param name="XMLData" value="<?xml version='1.0'?>
            <?mso-application progid='Excel.Sheet'?>
            <Workbook 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'>
             <DocumentProperties xmlns='urn:schemas-microsoft-com:office:office'>
              <Author></Author>
              <LastAuthor></LastAuthor>
              <Created></Created>
              <Company></Company>
              <Version></Version>
             </DocumentProperties>
             <ExcelWorkbook xmlns='urn:schemas-microsoft-com:office:excel'>
              <WindowHeight>8955</WindowHeight>
              <WindowWidth>15195</WindowWidth>
              <WindowTopX>120</WindowTopX>
              <WindowTopY>60</WindowTopY>
              <ProtectStructure>False</ProtectStructure>
              <ProtectWindows>False</ProtectWindows>
             </ExcelWorkbook>
             <Styles>
              <Style ss:ID='Default' 
              ss:Name='Normal'>
               <Alignment ss:Vertical='Bottom'/>
               <Borders/>
               <Font/>
               <Interior/>
               <NumberFormat/>
               <Protection/>
              </Style>
             </Styles>
             <Worksheet ss:Name='Sheet1'>
              <WorksheetOptions xmlns='urn:schemas-microsoft-com:office:excel'>
               <Selected/>
               <ProtectObjects>False</ProtectObjects>
               <ProtectScenarios>False</ProtectScenarios>
              </WorksheetOptions>
             </Worksheet>
              
            </Workbook>"/></object>
              <asp:Button ID="btnPrint" OnClick="btnPrint_Click" runat="server" Text="Print" /> 
    
              <asp:Button ID="btnsave" OnClientClick="javascript: return btnSave_Click();" runat="server" Text="Save" /> 
        </div>
        <input type=hidden runat="server" id="hdnXML" />
        </form>
        
    </body>

    Step3:Codebehind-Print Event Function

    C#
    protected void btnPrint_Click(object sender, EventArgs e)
        {
            try
            {
                //Export and save the OWC in HTM format.
                SpreadsheetClass spreadSheetClass = new SpreadsheetClass();
                spreadSheetClass.XMLData = hdnXML.Value;
                spreadSheetClass.Export(Server.MapPath("OWCXML.htm"), 
     Microsoft.Office.Interop.Owc11.SheetExportActionEnum.ssExportActionNone,
     SheetExportFormat.ssExportHTML);
    
                //Inject Print function into HTM file 
                StreamWriter streamWriter;
                streamWriter = System.IO.File.AppendText(Server.MapPath("OWCXML.htm"));
                streamWriter.WriteLine
    ("<html><body onload='window.print()'><table><tr><td></td></tr></table></body></html>");
                streamWriter.Flush();
                streamWriter.Close();
    
                //Call Javascript to popup 'OWCXML.htm'
                ClientScript.RegisterClientScriptBlock
    (this.GetType(), "Key1", "<script>window.showModalDialog('OWCXML.htm','popup'); </script>");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    Reference

    For more detail on OWC refer article by Gautam Sharma: Office Web Component v11.0 Spreadsheet and AJAX Interoperatibility Part1

  • License

    This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


    Written By
    Technical Lead
    Australia Australia
    Whatsup-->Exploring--> MVC/HTML5/Javascript & Virtualization.......!
    www.santoshpoojari.blogspot.com

    Comments and Discussions

     
    QuestionCan we open excel with multiple sheets? Pin
    Sachin_Gandhi10-Nov-10 2:05
    Sachin_Gandhi10-Nov-10 2:05 
    Questioncan we open existing excel file using OWC spreadsheet? Pin
    Sachin_Gandhi14-Oct-10 19:25
    Sachin_Gandhi14-Oct-10 19:25 
    Generalimages.. Pin
    kevdelkevdel20-May-08 6:51
    kevdelkevdel20-May-08 6:51 
    GeneralRe: images.. Pin
    santosh poojari20-May-08 18:42
    santosh poojari20-May-08 18:42 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.