C#展示Excel表格

  上一篇讲了利用.NET存储Excel表格的思路,C#存储Excel表格,在将Excel表格存储到数据库后,我们可以利用C#控件将存储的Excel做一个美观的展示与分析,众多WinForm控件里比较适合展示Excel表格的也就是Datagridview和Chart了。DataGridview展示Excel表格的效果如下:


这里写图片描述
图1.DataGridview显示Excel表格

  具体步骤为使用SqlConnection对象连接数据库后,建立SqlCommand对象,执行“SELECT * FROM 表”读取整张表的数据保存在DataSet中,然后制定DataGridview数据源为DataSet即可。

strtable = cmbName.Text + "$" + cmbYear.Text;
DataTable dt1 = new DataTable();
using (SqlConnection conn = new SqlConnection(connStr))
{
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "select * from " + strtable;
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        {
            da.Fill(dt1);
            dgvtable.DataSource = dt1;
        }
    }
}

  Chart控件展示Excel则更加灵活,可以通过数据线Series绘制,它可以是折线也可以是其他不同的样式,可以通过设置标题、样式、图例以及位置等与Excel表格任意两列联动,部分代码及注释如下。

//标题内容
title.Text = "监测指标年内动态分析图";
//标题的字体
title.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, FontStyle.Bold);
//标题字体颜色
title.ForeColor = Color.FromArgb(26, 59, 105);
//标题阴影颜色
title.ShadowColor = Color.FromArgb(32, 0, 0, 0);
//标题阴影偏移量
title.ShadowOffset = 2;
chart1.Titles.Add(title);
//Excel规定两列的列导入到Char中
string strtable = "dbo." +  + monitor + "$" + year ;
chart1.Series.Clear();
string strsql1 = "select 监测日期," + indicator + " from " + monitor + "$"  + year ;
SqlCommand cmd = new SqlCommand(strsql1, con);
cmd.Connection.Open();
SqlDataReader myreader = cmd.ExecuteReader();
chart1.DataBindTable(myreader, "监测日期");
myreader.Close();
//需要设置横坐标的间隔和偏移都为1,不然坐标多了会显示不全
chart1.Titles[0].Text = cmbYear.Text.ToString() + "年" + cmbMonitor.Text.ToString() + cmbIndicators.Text.ToString() + "变化分析";
chart1.ChartAreas[0].AxisX.Interval = 1;
chart1.ChartAreas[0].AxisX.IntervalOffset = 1;
chart1.ChartAreas[0].AxisX.LabelStyle.IsStaggered = false;
chart1.ChartAreas[0].AxisY.Title = cmbIndicators.Text.ToString() + "监测值(mg/L)";
chart1.ChartAreas[0].AxisX.Title = "监测时间(月份)";
//设置显示样式--线性
MarkerStyle marker = MarkerStyle.Square;
foreach (Series ser in chart1.Series)
{
    ser.ShadowOffset = 1;
    ser.BorderWidth = 1;
    ser.ChartType = SeriesChartType.Line;
    ser.MarkerSize = 12;
    ser.MarkerStyle = marker;
    ser.Font = new Font("Trebuchet MS", 8, FontStyle.Regular);
    ser.ToolTip = "监测日期:#VALX\n监测值:#VAL";
    marker++;
}
//图例显示位置
chart1.Legends[0].Alignment = StringAlignment.Center;
chart1.Legends[0].Docking = Docking.Bottom;
//关闭数据库  
con.Close();


这里写图片描述
图2.Char展示Excel效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值