當前位置:編程學習大全網 - 源碼下載 - 如何把repx文件轉換為word文件

如何把repx文件轉換為word文件

XtraReports 使用說明 壹 安裝 Dxperience 最新版本是 Dxperience v8.33。安裝完組件庫之後,Dxperience 中的控件會 自動嵌入到 vs 系統中。在創建報表等項目是並不需要添加引用,系統會自動為妳添加需要 的引用。 二 創建壹個簡單報表 我們以壹個最簡單的 hello word 例子開始。 首先打開 vs2005,新建壹個項目,點擊項目右鍵添加壹個新項,選擇 XtraReport Class v8.3(選擇 XtraReport Wizard v8.3 通過向導創建) , 點擊確定,彈出提示框, 選擇“是” ,則新的報表文件將添加進入 App_Code 文件夾內,如果選擇“否” ,則直接添加 進入項目中,會出現不能顯示設計器的情況,所以建議選擇“是” 。這樣壹個新的報表文件 添加進來了,但是壹個報表文件是不能直接顯示的,是要嵌入到頁面中才能顯示給客戶,將 壹個報表文件加入到頁面中其實很簡單,只需要加入幾句話就可以了,首先添加 DevExpress.Web 引用,然後新建壹個頁面,在頁面的前臺添加下面的引用: <%@ Register Assembly="DevExpress.XtraReports.v8.3.Web, Version=8.3.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.XtraReports.Web" TagPrefix="dxxr" %> 在form標簽中加入 <dxxr:ReportViewer ID="ReportViewer" runat="server"></dxxr:ReportViewer> 可以編輯報表顯示的邊框,尺寸等等。 在後臺加入下面的程序: protected void Page_Load(object sender, EventArgs e) { ReportViewer.Report = new XtraReport1(); } 這樣報表就可以顯示出來了, 但是現在我們什麽也看不到, 因為報表中還沒有添加任何內容。 下面我們向報表中添加內容,達到我們想要的顯示效果。 在初始的設計器中只有 PageHeader、明細和頁腳三個帶區。 如果想要添加更多的塊可以右鍵點擊設計器的任何地方,彈出菜單,選擇想要添加的帶區, 除了 Group Header 以外每壹個帶區都只能出現在壹個報表中壹次。 控件: 當我們安裝完 XtraReports 組件之後,在工具欄中就會自動加入報表控件組,我們常用到的 是控件是 XRLabel, XRTable。對於任何復雜報表,這些工具基本可以滿足妳的要求。首先我 們將 XRLabel 拖拽到 Detail 帶區。在屬性窗口修改 Text 屬性為“helloword” ,修改 Font 屬 性,將字體放大些。搞定!我們的第壹個報表程序完成了,就這麽簡單,不需要長長的代碼 和復雜的過程。從我們做的第壹個簡單的例子就可以看出,Dxperience 的這個報表控件特點 就是簡單、易用,設計器清爽、美觀。同時智能的創建向導也更加快捷使用。 三 連接數據源 上面我們只是創建非常簡單的報表,對於連接數據源,創建復雜報表 XtraReports 也提 供了非常好的解決辦法。下面我們看看怎麽樣連接數據源,顯示數據信息。XtraReports 對 於 web 項目中數據源的綁定不如 winform 項目靈活。我目前知道有兩種方式,壹種是:是 通過項目中添加 DataSet 文件的形式,通過 DataSet 得到的數據源添加到報表的數據源中。 第二種是:通過後臺編寫代碼實現數據綁定,如果還有其他方法,敬請賜教。 首先我們了解下第壹種通過 DataSet 綁定數據源方式。 在當前項目中(最好是在報表文件所在的目錄下)添加 DataSet 文件,則系統會彈出鏈 接數據源的向導, 選擇妳的數據源, 點擊下壹步——>點擊下壹步——>點擊下壹步——>默認選中『Use SQL statemens』 ,點擊下壹步——>點擊Query Builder. 彈出上面的對話框,這裏可以編寫 sql 語句了,點擊ok ,此時數據源產生了。下面 就是要將這個 DataSet 的數據源添加到報表中去。打開報表的設計視圖,在工具欄的 Data 組中選擇 DataSet,將 DataSet 拖拽到設計器界面中,如圖: 會彈出如圖所示的界面,在 Typed dataset 中,選擇剛剛創建的 DataSet1,這樣剛剛創建 的 DataSet 數據源就添加到了報表文件中。此時妳會發現在 Field List 窗口中多了壹個 dataset11,這個就是我們剛剛添加的數據源,將這些字段拖拽到我們報表的控件上,就達到 了綁定數據源的目的, 現在我先介紹下後臺代碼的綁定數據源方式。 首先創建數據源,這裏以 SQL Server 2005 為例,創建壹個 PersonInfo 的表。 CREATE TABLE [dbo].[PersonInfo]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50), [age] [int], [sex] [int], [wage] [decimal](8, 2)) 數據創建完之後,然後創建壹個的報表文件,在設計器示圖下,從工具欄中拖拽壹個 XRTable,對 XRTable 的操作與 html 中的 table 壹樣。插入指定列。有些情況報表的帶區是 不需要的,我們只需在設計時將其刪除,例如,這裏我們把 PageFooter 刪除了。 設計頁面已經完成, 下面就要指定報表的數據源。 在想要嵌入報表的頁面的後臺中插入下面 的代碼: protected void Page_Load(object sender, EventArgs e) { ReportViewer.Report = new XtraReport1(); DataSet ds = GetData(); ReportViewer.Report.DataSource = ds; } //使用ado.net連接數據源的普通代碼,在此省略 protected DataSet GetData() { } 報表的數據源已經給定了, 那麽就要將數據與控件對應。 在報表的代碼頁面加入下面的代碼: public XtraReport1() { InitializeComponent(); SetReportData(); } /// <summary> /// 設置報表數據源 /// </summary> private void SetReportData() { this.xrTableCell1.DataBindings.Add("Text", DataSource, "id"); this.xrTableCell2.DataBindings.Add("Text", DataSource, "name"); this.xrTableCell3.DataBindings.Add("Text", DataSource, "sex"); this.xrTableCell4.DataBindings.Add("Text", DataSource, "age"); this.xrTableCell5.DataBindings.Add("Text", DataSource, "wage"); } 大功告成,讓我們看看效果吧! 但是感覺還有壹些不足,時間戳,數據列沒有名稱,性別顯示是 0,1,工資字段沒有匯總。 下面我們壹項壹項解決這些問題。 註意:ReportHeader 帶區和 PageHeader 帶區的區別,ReportHeader 是顯示報表的頭部,只 顯示壹次,與報表的頁數無關,只在報表的第壹頁的頭部顯示;PageHeader 是頁頭顯示, 無論此報表多少頁, 每頁都會顯示 PageHeader 帶區中的部分, ReportFooter 和 PageFooter 與 其道 理相同 ,所 以我們 通常 將大標 題和 時間戳 放在 ReportHeader,將 列名 稱放 在 PageHeader 內。每頁匯總放在 PageFooter,總匯總放在 ReportFooter 中,設計視圖如圖: 這裏註意邊框的調整,Detail 帶區中的 Table 的邊框是沒有上邊框的,這樣在列表顯示時, 不會因為邊框重合而引起邊框寬度增加。顯示效果如圖所示: 下面看看匯總的實現,匯總有總計,平均值,百分比,最大,最小等等,上例中我們實現的 是對工資求總和, 首先添加 PageFooter 帶區, 拖拽壹個 XRLabel 設置 Text 為 “工資總計:, ” 再拖拽壹個 XRLabel,點擊 summary 屬性的省略部分,會彈出如圖所示部分: 這裏可以設置綁定列, 匯總函數類型, 結果顯示的字符串格式, 是否忽略空值, 匯總類型等。 這裏的匯總類型有多種形式,有按組匯總,按頁匯總,整個報表匯總。 匯總屬性設置完畢, 還要給這個控件綁定數據,在後臺綁定其他控件的地方加上這句: this.xrLabel3.DataBindings.Add("Text", DataSource, "wage"); 其他的匯總都是壹樣的! 差不多大功告成了, 還有壹些不足就是, 性別顯示是 0 或 1, 我們需要顯示的是男和女, 還不需要通過修改數據實現,那 XtraReport 可以實現嗎?告訴妳,是完全可以的!使用 HtmlItemCreated 事件,在性別列設置他的 HtmlItemCreated 事件,加入下面的代碼: if (e.ContentCell.InnerText == "0") { e.ContentCell.InnerText = "女"; } else if (e.ContentCell.InnerText == "1") { e.ContentCell.InnerText = "男"; } else { e.ContentCell.InnerText = " "; } 顯示如圖所示: 可以了,報表終於完成了,開始打印了,哎!?怎麽打印呢,忘了介紹了,現在我們 將打印,預覽,翻頁等介紹壹下。 在需要嵌入報表的頁面的前臺加入下面這句: <dxxr:ReportToolbar ID="ReportToolbar1" runat="server" ReportViewer %>" > </dxxr:ReportToolbar> ReportViewer="<%# 註意:其中 ReportViewer 是需要控制的報表的 ID。這樣,我們的報表就可以有打印,轉化格式 保存,翻頁(還沒有完成)的功能了。 數據如果太多了, 我希望每頁只顯示 3 條數據怎麽辦?下面涉及到翻頁了, 雖然打印工具欄 裏有翻頁功能,但是需要在報表裏設置頁數才能生效。首先聲明變量: int RecordCount = 0; //累加每頁的記錄數 寫 Detail 的 BeforePrint 事件,寫入下面的代碼: /// <summary> /// 實現每頁下面打印多少條記錄 /// </summary> private void Detail_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { //實現每頁下面打印多少條記錄 RecordCount += 1; if (RecordCount == 3) { Detail.PageBreak = PageBreak.AfterBand; //每頁打條記錄 RecordCount = 0; } else { Detail.PageBreak = PageBreak.None; } } 這樣,就可以實現分頁了,看看下面的效果: 剩下最後壹步了,就是字體問題,XtraReport 支持除宋體,仿宋之外的大部分字體,所以, 我們要對報表控件的字體屬性設置成支持的字體, 否則, 打印或者轉化成 pdf 格式的文件都 會將漢字轉化成方格。至此,壹張簡單的數據報表完成了,繪制報表還有很多技巧是在使用 中不斷摸索出來的。工作愉快,***同進步。 問題: 問題: 目前存在的問題是: 1、Developer Express .Net 8.3.3 版本不支持宋體和仿宋體字體,當漢字設置成宋體時, 打印與生成 pdf 文件時,漢字會變成方格,生成其他格式或瀏覽時不會發生問題。 2、使用客戶端報表設計器設計報表時,添加數據源問題,通過 ODBC 連接數據源時,Cache 數據庫不能得到數據源的表結構, 無法添加數據源, 所以只用 Cache 庫就無法使用客戶端報 表設計器設計報表文件 repx,然後通過頁面調用 repx 報表文件的形式。 3、啟動帶有報表的項目時或運行時都耗內存,運行速度慢。 註: //文中省略的使用ado.net連接數據源代碼 SqlConnection connect = new SqlConnection(); try{ SqlCommand command = new SqlCommand(); SqlDataAdapter da = new SqlDataAdapter(); string strConn = "server=HDCC-E; database=reportTest; User Id=sa; pwd=123;"; connect.ConnectionString = strConn; command.Connection = (SqlConnection)connect; da = new SqlDataAdapter(command); if (connect.State != ConnectionState.Open) { connect.Open(); } DataSet ds = new DataSet(); command.CommandText = " SELECT * FROM PersonInfo "; command.CommandType = CommandType.Text; da.SelectCommand = command; da.Fill(ds); return ds; } catch (Exception e) { return null; } finally{ if (connect.State == ConnectionState.Open) { connect.Close(); } }

  • 上一篇:為什麽知乎會比知道更有名?
  • 下一篇:考勤管理系統,讓外勤全透明
  • copyright 2024編程學習大全網