調用 google方法生成餅圖、條形圖、表格

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WeekReport.aspx.cs" Inherits="IWOMTrends.WeekReport" EnableViewState="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>報告詳情</title>
    <link rel="Stylesheet" type="text/css" href="css/Report.css" />
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>

    <script type="text/javascript">
        google.load('visualization', '1', { packages: ['corechart']});
        
    </script>
    <script type="text/javascript">
         function drawChart(){
         
            var bid=document.getElementById("<%=HidBrand.ClientID %>");
            if(bid.value!='30007'){
                drawColumn('ZChart',['負面','中立','正面'],'一週信息量比較',['#C0504D' ,'#4F81BD' , '#9BBB59'],[<%=WeekXValue %>],[<%=WeekValueArr %>],500);
                drawColumn('divPositive',['正面'],'一週正面信息量比較',['#9BBB59'],[<%=WeekXValue %>],[<%=Positive %>],330);
                drawColumn('divNegative',['負面'],'一週負面信息量比較',['#C0504D'],[<%=WeekXValue %>],[<%=Negative %>],330);
                
                drawColumn1('divNegService',[<%=NegServiceY %>],'負面媒體類型構成',['#4572A7','#AA4643','#89A54E','#71588F','#4198AF','#DB843D'],[<%=NegServiceX %>],[<%=NegServiceVal %>],550);
                drawColumn1('divPostService',[<%=PostServiceY %>],'正面媒體類型構成',['#4572A7','#AA4643','#89A54E','#71588F','#4198AF','#DB843D'],[<%=PostServiceX %>],[<%=PostServiceVal %>],550);
                
                drawColumn('divNegTopic1',['信息量'],'WSE負面信息地理分佈',['#C0504D'],[<%=NegAreaX %>],[<%=NegAreaVal %>],600);
                
                drawPie('divNegTopic2',[<%=NegTopicX %>],[<%=NegTopicVal %>],'負面話題構成',['#4f81bd','#9bbb59','#8064a2','#c0504d','#f2dddc','#c5d9f1','#e4bf19','#ccc0da','#4bacc6']);
                drawPie('divIndustryTopic',[<%=IndustryX %>],[<%=IndustryVal %>],'行業信息內容構成',['#9bbb59','#4f81bd','#c0504d','#8064a2','#e4bf19']);
                drawPie('divDeal',[<%=DealDataX %>],[<%=DealDataVal %>],'維護信息的內容情況',['#823331','#933b39','#a1423f','#ae4845','#ba4d4a','#c56765','#ce8a89','#d6a3a2','#dfb9b8','#e7cccc']);
            }
         }
         function drawColumn(divId,areaName,titleValue,colorName,Xvalue,Vvalue,KuanD) {
            //var areaName = ['負面','中立','正面'];
            var xLables = Xvalue;
            var areaValue = Vvalue;

            var data = new google.visualization.DataTable();
            data.addColumn('string', '品牌');
            for (var i = 0; i < areaName.length; ++i) {
                data.addColumn('number', areaName[i]);
            }
            data.addRows(xLables.length);
            for (var i = 0; i < xLables.length; ++i) {
                data.setCell(i, 0, xLables[i]);
            }
            for (var i = 0; i < areaName.length; ++i) {
                var country = areaValue[i];
                for (var x = 0; x < xLables.length; ++x) {
                    data.setCell(x, i + 1, country[x]);
                }
            }


            var ac = new google.visualization.ColumnChart(document.getElementById(divId));
            ac.draw(data, {
                title: titleValue,
                titleTextStyle: { fontSize: 16, fontName: '宋體' },
                legend: 'top',
                chartArea: { width: '70%', height: '60%' },
                fontSize: 12,
                colors: colorName,
                backgroundColor:'#FFFFFF',
                isStacked: true,
                width: KuanD,
                height: 300
            });
        }
        
        function drawColumn1(divId,areaName,titleValue,colorName,Xvalue,Vvalue,KuanD) {
            //var areaName = ['負面','中立','正面'];
            var xLables = Xvalue;
            var areaValue = Vvalue;

            var data = new google.visualization.DataTable();
            data.addColumn('string', '品牌');
            for (var i = 0; i < areaName.length; ++i) {
                data.addColumn('number', areaName[i]);
            }
            data.addRows(xLables.length);
            for (var i = 0; i < xLables.length; ++i) {
                data.setCell(i, 0, xLables[i]);
            }
            for (var i = 0; i < areaName.length; ++i) {
                var country = areaValue[i];
                for (var x = 0; x < xLables.length; ++x) {
                    data.setCell(x, i + 1, country[x]);
                }
            }
            var format = new google.visualization.NumberFormat({ fractionDigits:0, suffix:'%' });
            
            var ac = new google.visualization.ColumnChart(document.getElementById(divId));
            ac.draw(data, {
                title: titleValue,
                titleTextStyle: { fontSize: 16, fontName: '宋體' },
                legend: 'left',
                fontSize: 12,
                colors: colorName,
                backgroundColor:'#FFFFFF',
                isStacked: true,
                vAxis: { maxValue: 100,logScale:false},
                width: KuanD,
                height: 300
            });
        }
        
        function drawPie(id,valueName,valueText,titleText,colorText) {
            var areaName = valueName;
            var areaValue = valueText;
            var data = new google.visualization.DataTable();
            data.addColumn('string', '態度');
            data.addColumn('number', "帖子數");
            data.addRows(areaName.length);
            for (var i = 0; i < areaName.length; ++i) {
                data.setCell(i, 0, areaName[i]);
                data.setCell(i, 1, areaValue[i]);
            }
            var ac = new google.visualization.PieChart(document.getElementById(id));
            ac.draw(data, {
                title: titleText,
                titleTextStyle: { fontSize: 16, fontName: '微軟雅黑' },
                fontSize: 10,
                legend: 'top',
                colors: colorText,
                backgroundColor:'#FFFFFF',
                fontName:'微軟雅黑',
                width: 260,
                height: 260
            });
        }
        
        
        google.setOnLoadCallback(drawChart);
    </script>
</head>
<body style="background-color:White;">
    <form id="form1" runat="server">
        <div id="divDown" runat="server" style="text-align:right; width:100%; margin-top:20px;" class="style1">   
            <asp:ImageButton ID="lbn_down" runat="server" οnclick="lbn_down_Click" ImageUrl="~/images/b-zhoubao.jpg"/>  </div>
            <div style="margin-top:15px; width:100%;" runat="server" id="baogao">
            <div style="font-size: 20px; text-align: center; font-weight: bold;color: #6192A1">
                <%=rTitle %></div>
                
            <div style="font-size: 14px; font-family:Arial; padding-top: 5px; text-align: center; color: #525556; line-height: 150%;">
                <%=rContent %></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="Div1">
            </div>
            <div runat="server" style="font-size: 14px; padding-left:30px; color: #525556; line-height: 150%;" id="div_img">
                <div id="ZChart" style="width:652px;"></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-left:30px; color: #525556; " id="tongji"></div>
            <div runat="server" style="font-size: 14px; padding-left:10px; padding-top:20px; color: #525556; line-height: 150%;" id="div3">
                <div id="divPositive" style="width:332px; float:left;"></div>
                <div id="divNegative" style="width:332px; float:left;"></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-left:10px; color: #525556; line-height: 150%;" id="div4">
                <div id="divNegService" style="width:652px;"></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="fumiantongji"></div>
            <div runat="server" style="font-size: 14px; padding-left:10px; color: #525556; line-height: 150%;" id="div6">
                <div id="divPostService" style="width:652px;"></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="prodAttitdeHTML"></div>
            <div runat="server" style="font-size: 14px; padding-left:10px; padding-top:20px; color: #525556; line-height: 150%;" id="div5">
                <div id="divNegTopic1" style="width:652px;"></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="tongji2"></div>
            <div runat="server" style="font-size: 14px; padding-left:10px; padding-top:20px; color: #525556; line-height: 150%;" id="div7">
                <div id="divNegTopic2" style="width:332px; float:left;"></div>
                <div id="divIndustryTopic" style="width:332px; float:left;"></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="fumiantongji2"></div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="fumiantongji3"></div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="IndustryHtml"></div>
            <div runat="server" style="font-size: 14px; padding-left:10px; padding-top:20px; color: #525556; line-height: 150%;" id="div2">
                <div id="divDeal" style="width:652px;"></div>
            </div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="DealDataHTML"></div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="DealDataHTML1"></div>
            <div runat="server" style="font-size: 14px; padding-top: 20px; padding-left:30px; color: #525556; line-height: 150%;" id="MediaHtml"></div>
            <input type="hidden" id="downValue" runat="server" />
            <input type="hidden" id="HidBrand" runat="server" />
    </form>
</body>
</html>

using System;
using System.Data;
using System.Web.UI;
using System.Text;
using IWOMTrackerDBLayer.IWOMTrackerBLL;
using IWOMTrends.Common;
using IWOMTrackerDBLayer.Common;
using IWOMTrackerDBLayer.IWOMTrackerModel;

namespace IWOMTrends
{
    public partial class WeekReport : System.Web.UI.Page
    {
        public LoginUserModel loginUser;
        public string rContent;
        public string rTitle;
        public int brandID = 0;
        //圖表參數
        public string WeekXValue = "";
        public string WeekValueArr = "";
        public string Positive = "";
        public string Negative = "";
        public string NegServiceX = "";
        public string NegServiceVal = "";
        public string NegServiceY = "";
        public string PostServiceX = "";
        public string PostServiceVal = "";
        public string PostServiceY = "";
        public string NegAreaX = "";
        public string NegAreaVal = "";
        public string NegTopicX = "";
        public string NegTopicVal = "";
        public string IndustryX = "";
        public string IndustryVal = "";
        public string DealDataX = "";
        public string DealDataVal = "";
        public string cookievalue = System.Configuration.ConfigurationManager.AppSettings["BrandCookie"].ToString();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["Refere"] != null && Request["Refere"] != "")
            { brandID = 20002; }
            else
            {
                loginUser = LoginUserManager.GetLoginUser(true);
                //判斷權限
                if (!CommonFunction.CheckUserQX(loginUser, Request.Cookies[cookievalue]))
                    Response.Redirect("~/Login.aspx", true);
                brandID = int.Parse(Request.Cookies[cookievalue].Value);
            }
            this.HidBrand.Value = brandID.ToString();
            if (!IsPostBack)
            {
                GetWeekReport();
            }
        }

        private void GetWeekReport()
        {
            if (Request.QueryString["zhou"] != null && Request.QueryString["zhou"].ToString() == "week")
            {
                IWT_Brand brandObj = BrandBLL.GetModel(brandID);
                rTitle = brandObj.Brand_Name + "網絡口碑監測週報";
                
                this.divDown.Visible = true;
                tongji.Visible = true;
                string number = Request["value"].ToString().Substring(0, 1);
                string StrDate = Request["value"].ToString().Substring(5, Request["value"].ToString().Substring(5).LastIndexOf("-"));
                DateTime dt1 = DateTime.Now;
                DateTime dt2 = DateTime.Now;
                int index = 0;

                DateTime[] Arr_dt = new DateTime[5];
                DateTime startdt = Convert.ToDateTime(StrDate + "-1");
                DateTime enddt = startdt.AddMonths(1).AddDays(-1);


                for (DateTime i = startdt; i <= enddt; i = i.AddDays(1))
                {
                    if (Convert.ToInt32(i.DayOfWeek) == 1)
                    {
                        Arr_dt[index] = i;
                        index++;
                    }
                }
                if (number == "1")
                {
                    dt2 = Arr_dt[0];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "2")
                {
                    dt2 = Arr_dt[1];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "3")
                {
                    dt2 = Arr_dt[2];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "4")
                {
                    dt2 = Arr_dt[3];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "5")
                {
                    dt2 = Arr_dt[4];
                    dt1 = dt2.AddDays(6);
                }
                if(dt1 > DateTime.Now)
                { 
                    dt1 = DateTime.Now; 
                }
                rContent = dt2.ToShortDateString() + "至" + dt1.ToShortDateString();

                if (brandID == 30001)
                {
                    FirstAllTable(dt2, dt1);
                    SecondNegServiceData(dt2, dt1);
                    GetNegAreaData(dt2, dt1);
                    FourNegTopicData(dt2, dt1);
                    FourNegTopicData1(dt2, dt1);
                    FiveIndustryTopic(dt2, dt1);
                    SixDealData(dt2, dt1);
                    SixDealData1(dt2, dt1);
                    SevenMediaData(dt2, dt1);
                }
            }
        }

        //第一個表格
        private void FirstAllTable(DateTime dt2, DateTime dt1)
        {
            DataTable dtt = DailyWeeklyBLL.GetAllDataByWeely(brandID, dt2, dt1, ref WeekXValue, ref WeekValueArr, ref Positive, ref Negative, false);
            tongji.InnerHtml = CommonFunction.ExportHTML(dtt, "90%", "tblCSS");

        }
        //第二個表格
        private void SecondNegServiceData(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetServiceByWeely(brandID, dt2, dt1, true, ref NegServiceX, ref NegServiceY, ref NegServiceVal, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "80%", "tblCSS"));
            this.fumiantongji.InnerHtml = strB.ToString();

            dtable = DailyWeeklyBLL.GetServiceByWeely(brandID, dt2, dt1, false, ref PostServiceX, ref PostServiceY, ref PostServiceVal, false);
            strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "80%", "tblCSS"));
            this.prodAttitdeHTML.InnerHtml = strB.ToString();
        }
        //第三個表格
        private void GetNegAreaData(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetNegAreaData(brandID, dt2, dt1, ref NegAreaX, ref NegAreaVal, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "80%", "tblCSS"));
            this.tongji2.InnerHtml = strB.ToString();
        }
        //第四個表格
        private void FourNegTopicData(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetNegAreaData1(brandID, dt2, dt1, ref NegTopicX, ref NegTopicVal, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "99%", "tblCSS"));
            this.fumiantongji2.InnerHtml = strB.ToString();
        }
        private void FourNegTopicData1(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetNegAreaData11(brandID, dt2, dt1, ref NegTopicX, ref NegTopicVal, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "99%", "tblCSS"));
            this.fumiantongji3.InnerHtml = strB.ToString();
        }
        //第五個表格
        private void FiveIndustryTopic(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetIndustryData(30006, dt2, dt1, ref IndustryX, ref IndustryVal, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "80%", "tblCSS"));
            this.IndustryHtml.InnerHtml = strB.ToString();
        }
        //第六個表格
        private void SixDealData(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetDealData(brandID, dt2, dt1, ref DealDataX, ref DealDataVal, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "99%", "tblCSS"));
            this.DealDataHTML.InnerHtml = strB.ToString();
        }
        private void SixDealData1(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetDealData1(brandID, dt2, dt1, ref DealDataX, ref DealDataVal, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "99%", "tblCSS"));
            this.DealDataHTML1.InnerHtml = strB.ToString();
        }
        //第七個表格
        private void SevenMediaData(DateTime dt2, DateTime dt1)
        {
            DataTable dtable = DailyWeeklyBLL.GetMediaData(brandID, dt2, dt1, false);
            StringBuilder strB = new StringBuilder();
            strB.Append(CommonFunction.ExportHTML(dtable, "60%", "tblCSS"));
            this.MediaHtml.InnerHtml = strB.ToString();
        }
       
        //導出
        protected void lbn_down_Click(object sender, ImageClickEventArgs e)
        {

            if (Request.QueryString["zhou"] != null && Request.QueryString["zhou"].ToString() == "week")
            {

                IWT_Brand brandObj = BrandBLL.GetModel(brandID);
                #region 計算日期
                this.divDown.Visible = true;
                tongji.Visible = true;
                string number = Request["value"].ToString().Substring(0, 1);
                string StrDate = Request["value"].ToString().Substring(5, Request["value"].ToString().Substring(5).LastIndexOf("-"));
                DateTime dt1 = DateTime.Now;
                DateTime dt2 = DateTime.Now;
                int index = 0;
                DateTime[] Arr_dt = new DateTime[5];
                DateTime startdt = Convert.ToDateTime(StrDate + "-1");
                DateTime enddt = startdt.AddMonths(1).AddDays(-1);


                for (DateTime i = startdt; i <= enddt; i = i.AddDays(1))
                {
                    if (Convert.ToInt32(i.DayOfWeek) == 1)
                    {
                        Arr_dt[index] = i;
                        index++;
                    }
                }
                if (number == "1")
                {
                    dt2 = Arr_dt[0];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "2")
                {
                    dt2 = Arr_dt[1];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "3")
                {
                    dt2 = Arr_dt[2];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "4")
                {
                    dt2 = Arr_dt[3];
                    dt1 = dt2.AddDays(6);
                }
                else if (number == "5")
                {
                    dt2 = Arr_dt[4];
                    dt1 = dt2.AddDays(6);
                }
                #endregion

                DataTable dt = new DataTable();
                dt.Columns.Add(" ");
                dt.Columns.Add("  ");
                dt.Columns.Add("   ");
                dt.Columns.Add("    ");
                dt.Columns.Add("     ");
                dt.Columns.Add("      ");
                dt.Columns.Add("       ");
                dt.Columns.Add("        ");
                dt.Columns.Add("         ");
                dt.Columns.Add("          ");
                dt.Columns.Add("           ");

                rTitle = brandObj.Brand_Name + "網絡口碑監測週報";
                rContent = dt2.ToShortDateString() + "至" + dt1.ToShortDateString();
                DataRow row = dt.NewRow();
                row[0] = rContent + " " + rTitle;
                for (int i = 1; i < 11; i++)
                {
                    row[i] = "";
                }
                dt.Rows.Add(row);
                row = dt.NewRow();
                for (int i = 0; i < 11; i++)
                {
                    row[i] = "";
                }
                dt.Rows.Add(row);
                if (brandID == 30001)
                {
                    string[] titleArr = new string[10] { "一週信息量", "負面媒體類型構成", "正面媒體類型構成", "WSE負面信息地理分佈", "WSE負面話題構成", "", "行業信息內容構成", "維護信息的內容情況", "", "維護信息的媒體" };
                    DataTable[] dtArr = new DataTable[10];
                    dtArr[0] = DailyWeeklyBLL.GetAllDataByWeely(brandID, dt2, dt1, ref WeekXValue, ref WeekValueArr, ref Positive, ref Negative, false);
                    dtArr[1] = DailyWeeklyBLL.GetServiceByWeely(brandID, dt2, dt1, true, ref NegServiceX, ref NegServiceY, ref NegServiceVal, false);
                    dtArr[2] = DailyWeeklyBLL.GetServiceByWeely(brandID, dt2, dt1, false, ref PostServiceX, ref PostServiceY, ref PostServiceVal, false);
                    dtArr[3] = DailyWeeklyBLL.GetNegAreaData(brandID, dt2, dt1, ref NegAreaX, ref NegAreaVal, false);
                    dtArr[4] = DailyWeeklyBLL.GetNegAreaData1(brandID, dt2, dt1, ref NegTopicX, ref NegTopicVal, false);
                    dtArr[5] = DailyWeeklyBLL.GetNegAreaData11(brandID, dt2, dt1, ref NegTopicX, ref NegTopicVal, false);
                    dtArr[6] = DailyWeeklyBLL.GetIndustryData(30006, dt2, dt1, ref IndustryX, ref IndustryVal, false);
                    dtArr[7] = DailyWeeklyBLL.GetDealData(brandID, dt2, dt1, ref DealDataX, ref DealDataVal, false);
                    dtArr[8] = DailyWeeklyBLL.GetDealData1(brandID, dt2, dt1, ref DealDataX, ref DealDataVal, false);
                    dtArr[9] = DailyWeeklyBLL.GetMediaData(brandID, dt2, dt1, false);
                    DataRow drow;
                    for (int k = 0; k < dtArr.Length; k++)
                    {
                        if (dtArr[k] != null && dtArr[k].Rows.Count > 0)
                        {
                            row = dt.NewRow();
                            row[0] = titleArr[k];
                            for (int i = 1; i < 11; i++)
                            {
                                row[i] = "";
                            }
                            dt.Rows.Add(row);
                            foreach (DataRow dr in dtArr[k].Rows)
                            {
                                drow = dt.NewRow();
                                for (int i = 0; i < 11; i++)
                                {
                                    if (i < dr.ItemArray.Length)
                                        drow[i] = dr[i].ToString();
                                }
                                dt.Rows.Add(drow);
                            }
                            row = dt.NewRow();
                            for (int i = 0; i < 11; i++)
                            {
                                row[i] = "";
                            }
                            dt.Rows.Add(row);
                        }
                    }

                    string FileName = brandObj.Brand_Name + "_" + System.DateTime.Parse(Convert.ToString(System.DateTime.Now)).ToString("yyyy-MM-dd");
                    DataSet dsett = new DataSet();
                    dsett.Tables.Add(dt);
                    IWOMTrends.Common.CommonFunction.ExportCSV(dt, Page.Response, FileName, true);
                }
            }
        }

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章