找回密码
 立即注册

QQ登录

只需一步,快速开始

liunian

注册会员

3

主题

4

帖子

64

积分

注册会员

积分
64
  • 60

    金币

  • 主题

  • 帖子

最新发帖
liunian
注册会员   /  发表于:2015-9-8 10:49  /   查看:4796  /  回复:4
1.如何设置chart图表显示在Spread表格sheet的底部(注意sheet的高度是根据数据动态变化)

20150908102602.png

120.01 KB, 下载次数: 220

4 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-9-8 15:33:00
沙发
回复 1楼liunian的帖子

你好,
可以通过Chart的 Top 属性设置其 Y 坐标,Left属性设置其 X 坐标,起始点为左上角单元格。大体思路如下:
Chart.Top=所有行高和+所有边框和-图表高度
回复 使用道具 举报
liunian
注册会员   /  发表于:2015-9-8 16:30:00
板凳
int rowHeight = 0;
            
foreach (Row row in sheetView.Rows)
      {
           rowHeight += row.Height;     
       }
发现行高都是一样,其实是不一样的,那么如何得到真实行高呢 还有边框高度
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-9 11:19:00
地板
回复 3楼liunian的帖子

你好,

我通过以下代码实现了Chart底部位置的设定,可以根据以下代码测试,关键代码为:chart.Top = Convert.ToInt32(this.FpSpread1.Height.Value) -this.FpSpread1.ColumnHeader.Height - Convert.ToInt32(chart.Height.Value)-30;


  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.                 return;
  5.             //设置数据源
  6.             DataTable dt = new DataTable("Test");
  7.             DataRow dr = default(System.Data.DataRow);
  8.             dt.Columns.Add("名称");
  9.             dt.Columns.Add("数量");

  10.             dr = dt.NewRow();
  11.             dr[0] = "电器";
  12.             dr[1] = 0.2;
  13.             dt.Rows.Add(dr);

  14.             dr = dt.NewRow();
  15.             dr[0] = "服装";
  16.             dr[1] = 0.5;
  17.             dt.Rows.Add(dr);

  18.             dr = dt.NewRow();
  19.             dr[0] = "家具";
  20.             dr[1] = 0.3;
  21.             dt.Rows.Add(dr);

  22.             //设置 BarSeries
  23.             FarPoint.Web.Chart.BarSeries series = new FarPoint.Web.Chart.BarSeries();

  24.             //设置图表展示数据
  25.             series.Values.DataSource = dt;
  26.             series.Values.DataField = dt.Columns[1].ColumnName;

  27.             //使用多样化颜色显示
  28.             series.VaryColors = true;

  29.             //设置 X 轴显示名称
  30.             series.CategoryNames.Add("电器");
  31.             series.CategoryNames.Add("服装");
  32.             series.CategoryNames.Add("家具");
  33.             series.LabelVisible = true;

  34.             //设置 YPlotArea
  35.             FarPoint.Web.Chart.YPlotArea plotArea = new FarPoint.Web.Chart.YPlotArea();
  36.             //设置显示单位为 20%
  37.             //plotArea.YAxes[0].DisplayUnits = 0.5;

  38.             //设置 Y 轴显示为 Percentage
  39.             plotArea.YAxes[0].LabelNumberFormat = "00.0%";

  40.             //设置 YPlotArea 显示位置
  41.             plotArea.Location = new System.Drawing.PointF(0.2F, 0.2F);
  42.             //设置 YPlotArea 大小
  43.             plotArea.Size = new System.Drawing.SizeF(0.6F, 0.6F);

  44.             plotArea.Series.Add(series);

  45.             //设置图例
  46.             LegendArea legend = new LegendArea();
  47.             legend.Location = new PointF(0.98f, 0.5f);
  48.             legend.AlignmentX = 1.0f;
  49.             legend.AlignmentY = 0.5f;

  50.             //设置图表标签
  51.             LabelArea label = new LabelArea();
  52.             label.Text = "产品分布";
  53.             label.Location = new PointF(0.5f, 0.02f);
  54.             label.AlignmentX = 0.5f;
  55.             label.AlignmentY = 0.0f;

  56.             FarPoint.Web.Chart.ChartModel model = new FarPoint.Web.Chart.ChartModel();
  57.             model.PlotAreas.Add(plotArea);
  58.             model.LegendAreas.Add(legend);
  59.             model.LabelAreas.Add(label);

  60.             FarPoint.Web.Spread.Chart.SpreadChart chart = new FarPoint.Web.Spread.Chart.SpreadChart();
  61.             chart.ViewType = ChartViewType.View3D;
  62.             chart.Model = model;


  63.             //30 为下方CommandBar 的高度。
  64.             chart.Top = Convert.ToInt32(this.FpSpread1.Height.Value) -this.FpSpread1.ColumnHeader.Height - Convert.ToInt32(chart.Height.Value)-30;

  65.             FpSpread1.Sheets[0].Charts.Add(chart);
  66.         }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-17 09:13:00
5#
回复 3楼liunian的帖子

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部