.NET下Excel報表的列印

來源:互聯網
上載者:User

標籤:wamp   pga   drs   pcr   cas   動態   jsp   upd   xsd   

說明:這是一個實驗的小範例,在實際項目中使用時,一般Object[,] 對象的資料來源於資料庫。

1. 實驗環境

開發平台:Visual Studio 2010

測試模板:JBtest

Excel:Office2007 Excel

2. 項目所用組件

 

為什麼選擇ASP.NET做列印的功能,由於office和Visual  studio同是微軟的開發軟體,具有良好的相容性,利用上述.dll組件,能夠輕鬆實現excel模板的匯入和excel資料的匯出。

ExcelQuicker.dll動態連結程式庫須要在網上下載,引用到項目中才幹夠使用。我用的這個版本號碼比較早。版本號碼號是2.2.0.0。如今的更新版本號碼可能改動了一些函數和類的名稱,請參考後使用。

3. webconfig配置

4.項目結構

以上是項目的總體結構,當中,測試網頁為Default.aspx。Lib檔案夾下的ExcelQuicker.xml為ExcelQuicker組件的配置文檔。Message.xml為匯入出錯時報錯的資訊。

 

5.報表列印

首先在實現列印的網頁後台引用命名空間:using ExcelQuicker.Framework;

利用ExcelQuicker.Framework空間的對應類提供的介面實現報表的建立

EQApplication objApp = new EQApplication(strFileName, EQReportFormat.Excel, strTemplate, false);

  EQWorksheet objWS = new EQWorksheet("報表資料");

 

資料寫入到excel文檔裡相似於VBA編程,詳細細節功能請參考代碼:Default.aspx.cs  

EQRange range = new EQRange(objData, 11, 5, 15, 5);   //從“11行 5列” 到 “22行  5列”    

 objWS.Add(range);

 

Default.aspx.cs後台主要代碼: 

 protected void dy_Click1(object sender, EventArgs e)
        {
            string wjm;
            string strTemplate = "JBtest.xls";//模板檔案名稱
            Initialize();//調用excel quicker初始化函數
            // string strFileName = Session["yhid"].ToString();
            string strFileName = "wangling";
            wjm = strFileName;
            wjm = wjm + "_" + strTemplate;
            set_Excel(wjm, strTemplate);//產生並設定此excel表
            Response.Redirect("..\\ExcelQuicker\\TempReports\\" + wjm);
        }
        public void Initialize()
        {

            EQConfiguration.XmlFileName = HttpRuntime.AppDomainAppPath + "ExcelQuicker\\Lib\\Message.xml";
            EQConfiguration.Language = "EN";
            EQConfiguration.TemporaryFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\\TempReports\\";
            EQConfiguration.OutputFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\\TempReports\\";
            EQConfiguration.TemplateFilePath = HttpRuntime.AppDomainAppPath + "jb\\xls\\";
        }

        void set_Excel(string strFileName, string strTemplate)
        {


            EQApplication objApp = new EQApplication(strFileName, EQReportFormat.Excel, strTemplate, false);
            EQWorksheet objWS = new EQWorksheet("報表資料");

            object[,] objData, objData3, objData4, objData5, objData6, objData7;
            objData = new object[5, 1];//用於存放要填充到Excel中的資料

            objData3 = new object[8, 1];

            objData4 = new object[1, 1];
            objData5 = new object[3, 1];

            objData6 = new object[8, 1];
            objData7 = new object[8, 1];

            string ren, ren1, ren2, ren3;
            objData[0, 0] = congye .Text  ;//從業人員期末人數
            objData[1, 0] = guanli .Text ;//單位負責人
            objData[2, 0] = zaigang .Text ;//在崗職工
            objData[3, 0] = laowu .Text ;//勞務派遣人員
            objData[4, 0] =qita0 .Text ;//其它從業人員



            ren = "188" + "  人";
            ren1 = "22" + "  人";
            ren2 = "33" + "  人";
            ren3 = "44" + "  人";
            objData4[0, 0] = ren;//直接從事生產經營活動的平均人數
            objData5[0, 0] = ren1;//當中:project技術人員
            objData5[1, 0] = ren2;//當中:一級建造師
            objData5[2, 0] = ren3;//當中:現場施工人員



            EQRange range = new EQRange(objData, 11, 5, 15, 5);   //從“11行 5列” 到 “22行  5列”     
            objWS.Add(range);

            EQRange range4 = new EQRange(objData4, 30, 3, 30, 3);   //從“11行 5列” 到 “22行  5列”     
            objWS.Add(range4);
            EQRange range5 = new EQRange(objData5, 32, 6, 34, 6);   //從“11行 10列” 到 “22行  10列”     
            objWS.Add(range5);




            objData7[0, 0] = pingjun .Text ;
            objData7[1, 0] =zaigangpj0.Text ;
            objData7[2, 0] = laowupj0.Text ;
            objData7[3, 0] = qitapj.Text ;
            //range7 1-本季 平均人數//
            EQRange range7 = new EQRange(objData7, 16, 5, 19, 5);
            objWS.Add(range7);



            objData3[0, 0] =congyeg.Text ;//從業人員工資總額
            objData3[1, 0] = zaizhig.Text  ;//在崗職工工資總額
            objData3[2, 0] = laog .Text ;//勞務派遣人員工資總額
            objData3[3, 0] = qitag.Text ;//其它從業人員工資總額

            EQRange range3 = new EQRange(objData3, 21, 5, 24, 5);   //從“11行 10列” 到 “22行  10列”     
            objWS.Add(range3);



            objData6[0, 0] = congyepjg.Text ;

            objData6[1, 0] = zaigangpjg.Text ;

            objData6[2, 0] =laowupjg.Text ;

            objData6[3, 0] = qitapjg.Text ;


            EQRange range6 = new EQRange(objData6, 25,5,28, 5);
            objWS.Add(range6);

            //下面填寫報送人員資訊
            string ryxx = "單位負責人: " + df.Text + "    統計負責人:" + xf.Text + " 填表人:" + tf.Text;


            objData = new object[1, 1];
            objData[0, 0] = ryxx;
            range = new EQRange(objData, 35, 1, 35, 1);
            objWS.Add(range);

            //下面填寫表頭單位名稱

            objData = new object[1, 1];
            objData[0, 0] = "Excel表格式資料匯出測試";
            range = new EQRange(objData, 7, 1, 7, 1);
            objWS.Add(range);
            objApp.Add(objWS);

            try
            {
                objApp.Output();
            }
            catch (Exception)
            {
                objApp.Dispose();
            }
        }

6. 效果

介面上填寫資料,把填寫的資料匯入到相應的excel文檔裡面

填寫資料後,點擊匯出excelbutton,出現介面

列印到Excel後的結果

以上小範例下載:Demo.zip

 

 

.NET下Excel報表的列印

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.