ASP.NET中用OWC10及XML技術實現

來源:互聯網
上載者:User
asp.net|xml 摘要: 應用組件編程是C#的主要方面,本文結合作者在項目開發中的實際經驗,通過一個具體執行個體來闡述調用組件OWC10和使用XML技術來繪製各種動態統計圖,折線趨勢圖的方法和技巧。關鍵詞:C#,ASP.NET,.NET SDK,OWC10,組件編程,XML,B/S模式,COM,伺服器端,類,屬性1 前言
隨著WWW的發展,愈來愈多的資訊系統,專家系統開發採用瀏覽器/伺服器(B/S)模式。自微軟(Microsoft)公司在2002年3月推出.net之後,由於快速,高效,方便等特性,ASP.NET成為開發B/S系統的首選。而對各種有用資訊進行統計並產生相應的動態統計圖是十分重要的和必要,調用組件OWC(Office Web Component)相關類裡的方法,屬性,就能輕易的實現畫各種柱狀圖,曲線圖橫條圖,雷達圖,地區圖,餅圖等,大大提高了開發效率。OfficeXP對應OWC10,Office2003對應OWC11版本,它實際就是一個COM,本文根據在實際項目開發中總結的經驗給出了一個在ASP.NET中調用OWC10實現畫折線趨勢圖的執行個體方法,並進行了擴充,以拋磚引玉。 2 功能實現  開發系統平台是WindowsXP+VisualStudio.NET2003+SQL Server2000,開發語言是C#.1)       系統配置 在ASP.NET中調用OWC10繪圖之前必須在伺服器端進行如下設定:(1)    從微軟的網站免費下載OWC10,地址是http://office.microsoft.com/downloads/2002/owc10.aspx或直接從網上搜尋Interop.OWC10.dll,OWC10.dll兩個dll檔案,也可從OfficeXP安裝盤裡找到並安裝為共用組件。(2)    將找到的Interop.OWC10.dll和OWC10.dll檔案放到項目目錄下的bin檔案夾裡。(3)    開啟專案檔,在引用裡添加Interop.OWC10.dll和OWC10.dll檔案。在webform1.aspx的前台裡添加控制項Image,並設定其Id=Image1。(4)    安裝IIS(在WindowsXP添加組件裡),設定虛擬目錄。並配置Web.config檔案(5)    在企業管理器裡建立資料庫zj_new,並建立你所需要的表,添加相關的資料。在本項目裡資料庫表結構如下:
資料庫名 zj_new
表名 TestMuti
欄位名 欄位類型 欄位長度 備忘
id Int 4 關鍵字
MetalComponent Char 10 金屬名(如:Fe,Cu,Al)
TestTime float 8 測試時間
NongDu float 8 所含金屬濃度
 2)後台代碼     在webform1.aspx.cs中關鍵原始碼及文字說明如下:using OWC10; //很關鍵using System.Data.SqlClient;//using System.Configuration;//using System.Xml;  //關鍵,引用System.XMLSqlConnection myConn=new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);string myCommString="select TestTime,NongDu from TestMuti where MetalComponent='Fe' ";//注意x軸按升序排序DataSet ds = new DataSet("Chart");  DataTable dt=new DataTable();               SqlDataAdapter da = new SqlDataAdapter(myCommString, myConn);               da.Fill(ds);               OWC10.ChartSpaceClass oChartSpace = new OWC10.ChartSpaceClass(); //建立圖空間              System.IO.StringWriter sw = new System.IO.StringWriter(); //用於寫入字串              XmlDocument xDoc = new XmlDocument(); //建立xml文檔              ds.WriteXml(sw);               // clean up               myConn.Close();               da.Dispose();       xDoc.LoadXml(sw.ToString());             sw.Close();                  System.Xml.XmlNodeList nodes;               nodes = xDoc.ChildNodes.Item(0).ChildNodes;               int nCount = nodes.Count;               string[] aNames = new string[nCount];               string[] aTotals = new string[nCount];               string names=String.Empty;               string totals =String.Empty;               int i = 0;               for(i=0;i<nCount;i++)               {                    aNames[i]= nodes.Item(i).ChildNodes.Item(0).InnerText;    //千萬別寫成Item(i-1)否則就少一個點了;                       aTotals[i]= nodes.Item(i).ChildNodes.Item(1).InnerText;               }             names= String.Join("\t", aNames);                totals= String.Join("\t", aTotals);             oChartSpace.Charts.Add(0);  //設定繪圖空間及圖表格式oChartSpace.Charts[0].Border.Color="blue";//邊界顏色 oChartSpace.Charts[0].HasTitle=true;//圖表標題;     oChartSpace.Charts[0].Title.Caption="油樣鐵譜分析";//圖表標題解說文字      oChartSpace.HasChartSpaceTitle=true; //      oChartSpace.ChartSpaceTitle.Caption="折線趨勢圖測試"; //繪圖空間標題解說文字      oChartSpace.Charts[0].Axes[0].HasTitle=true;         //x軸     oChartSpace.Charts[0].Axes[0].Title.Caption="時間(10小時)"; //x軸標題說明     oChartSpace.Charts[0].Axes[1].HasTitle=true;        //y軸     oChartSpace.Charts[0].Axes[1].Title.Caption="Is(磨損烈度)";//y軸標題說明     oChartSpace.Charts[0].HasLegend=true;   //允許有圖例     oChartSpace.Charts[0].Legend.Position=OWC10.ChartLegendPositionEnum.chLegendPositionRight;//設定圖例位置, oChartSpace.Charts[0].PlotArea.Interior.Color="Wheat";  //設定圖表區域塊內填充顏色 oChartSpace.Charts[0].Type=OWC10.ChartChartTypeEnum.chChartTypeSmoothLineMarkers; //設定第一個圖表Charts[0]的第一個圖形的屬性     oChartSpace.Charts[0].SeriesCollection.Add(0);//為圖表一添加第一個圖形oChartSpace.Charts[0].SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimSeriesNames,Convert.ToInt32(OWC10.ChartSpecialDataSourcesEnum.chDataLiteral),"Fe");//設定第一條曲線即SeriesCollection[0]的標題oChartSpace.Charts[0].SeriesCollection[0].Interior.Color="Blue"; //用來設定第一個圖形內的節點的顏色為顏色(此處為藍色);oChartSpace.Charts[0].SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimCategories,      Convert.ToInt32(OWC10.ChartSpecialDataSourcesEnum.chDataLiteral),names ); oChartSpace.Charts[0].SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimValues,      Convert.ToInt32(OWC10.ChartSpecialDataSourcesEnum.chDataLiteral),totals ); oChartSpace.Charts[0].SeriesCollection[0].Line.Color="green";//控制線形圖的連線的顏色;      oChartSpace.Charts[0].SeriesCollection[0].Marker.Style=OWC10.ChartMarkerStyleEnum.chMarkerStyleDiamond;//線形圖string strFullPathAndName=Server.MapPath(System.DateTime.Now.Ticks.ToString() +".gif");      oChartSpace.ExportPicture( strFullPathAndName, "gif", 600, 400); //確定圖框的長和寬         Image1.ImageUrl=strFullPathAndName; //將圖形輸到id為Image1的控制項裡;              Image1.Visible =true;   3)       輸出結果如(圖一)所示:         (圖一)4)       靈活擴充將其他都不變,只改如下屬性( 即粗字型部分)就可得不同類型的統計圖形:oChartSpace.Charts[0].Type= OWC10.ChartChartTypeEnum. chChartTypeColumnClustered3D;此屬性輸出為如(圖二)的立體柱狀圖                 (圖二)當然還可以在同一個資料圖表中,添加多個資料數列,以便進行各個資料數列比較統計,重複畫一個資料圖的過程即可得多個資料數列圖,十分方便。如(圖三)所示:                (圖三)3 總結   通過調用組件OWC10強大的繪圖功能,及應用XML技術,只要更改其輸出屬性,就可以得到不同類型的輸出圖形,靈活多變,編程簡單,執行效率高,也大大提高了開發效率,克服了在.NET Frame Work SDK裡沒有提供製作資料圖表的相關類,用C#繪製各種動態統計圖,趨勢圖很麻煩的缺點。4 參考文獻:     1. Dan Wahlinzhu著《基於XML的ASP.NET開發》,清華大學出版社2 .Simon Robinson著 《Professional C# 2nd Edition》, 清華大學出版社3.木林森著 《C#和ASP.NET程式設計教程》,清華大學出版社4.Scott Allen著 《c#資料庫入門經典》,清華大學出版社   


相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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