找回密码
 立即注册

QQ登录

只需一步,快速开始

Hjr2350
论坛元老   /  发表于:2013-5-7 15:13  /   查看:22170  /  回复:31
我现在遇到了,chart图表显示中文出现乱码的问题
现象如“麻烦请教下,导出Excel带chart图表中中文部分是乱码”帖子中所显示的样子
我使用DOF推荐的第二种方法
“2、使用下面的方式添加图表fpSpread1.ActiveSheet.AddChart(new FarPoint.Win.Spread.Model.CellRange(0, 0, 4, 5), typeof(FarPoint.Win.Chart.BarSeries), 500, 300, 0, 100);”
来做的但是我这显示效果没有发生变化
我图表生成代码如下
  1.                //初始化
  2.                 fpSpread_Bar.Sheets[0].Charts.Clear();
  3.                 fpSpread_Bar.Sheets[0].RowCount = 1;

  4.                 BarSeries bseries_People = new BarSeries();
  5.                 bseries_People.GapWidth = 0.25F;
  6.                 bseries_People.BarFill = new SolidFill(Color.IndianRed);
  7.                 bseries_People.SeriesName = "预约人数";
  8.                 bseries_People.LabelVisible = true;

  9.                 //获得图标数据源
  10.                 int iCount = 0;
  11.                 for (int i = 0; i < fpSpread_Table.Sheets[0].RowCount - 2; i++)
  12.                 {
  13.                     if (fpSpread_Table.Sheets[0].Cells[i, 1].Text != "")
  14.                     {
  15.                         bseries_People.Values.Add(Convert.ToDouble(fpSpread_Table.Sheets[0].Cells[i, 1].Text));
  16.                         bseries_Cost.Values.Add(Convert.ToDouble(fpSpread_Table.Sheets[0].Cells[i, 2].Text));
  17.                         if (fpSpread_Table.Sheets[0].Cells[i, 0].Text != "")
  18.                         {
  19.                             bseries_People.CategoryNames.Add(fpSpread_Table.Sheets[0].Cells[i, 0].Text);
  20.                             bseries_Cost.CategoryNames.Add(fpSpread_Table.Sheets[0].Cells[i, 0].Text);
  21.                         }
  22.                         iCount++;
  23.                     }
  24.                 }

  25.                 if (iCount <= 0) return;    //当收集数据源为空时,退出

  26.                 fpSpread_Bar.Sheets[0].AddColumns(0, iCount*2);
  27.                 fpSpread_Bar.Sheets[0].AddRows(0, 38);  //添加相应高度的行数,否则滚动条异常

  28.                 //设置柱形样式
  29.                 YPlotArea plotArea_People = new YPlotArea();
  30.                 plotArea_People.Location = new PointF(0.1f, 0.2f);
  31.                 plotArea_People.Size = new SizeF(0.8f, 0.6f);
  32.                 plotArea_People.Series.Add(bseries_People);

  33.                 //添加标题
  34.                 LabelArea label_People = new LabelArea();
  35.                 label_People.Location = new PointF(0.5f, 0.02f);
  36.                 label_People.AlignmentX = 0.5f;
  37.                 label_People.AlignmentY = 0.0f;
  38.                 label_People.Text = "柱形图-预约人数";

  39.                 //组合图表
  40.                 ChartModel model_People = new ChartModel();
  41.                 model_People.PlotAreas.Add(plotArea_People);
  42.                 model_People.LabelAreas.Add(label_People);

  43.                 //插入到表格中
  44.                 fpSpread_Bar.ActiveSheet.AddChart(new FarPoint.Win.Spread.Model.CellRange(0, 0, 14, 15), typeof(BarSeries), fpSpread_Bar.Width - 30, 385, 0, 0);
  45.                 fpSpread_Bar.ActiveSheet.Charts[0].Model = model_People;
  46.                 fpSpread_Bar.ActiveSheet.Charts[0].Locked = true;
复制代码


我写法有什么问题吗?我下方的说明文字不可能去除,有没有方法来解决这个问题?我试验了下,在设计器中不存在该问题
谢谢你的帮助

31 个回复

倒序浏览
Hjr2350
论坛元老   /  发表于:2013-5-7 17:50:00
沙发
不知可以解决吗?在线等,我刚试验了下,在设计器中不存在该问题
还有一个问题利用
  1. fpSpread_Table.SaveExcel(@"C:/1.xls", FarPoint.Excel.ExcelSaveFlags.SaveCustomColumnHeaders);
复制代码

生成的EXCEL是“受保护的工作表”,但是我现在希望能对生成excel做进一步的操作,如何能在保存时撤销该保护状态?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-7 18:45:00
板凳
回复 2楼Hjr2350的帖子

2# 中问题可以通过以下操作实现:

  1. this.fpSpread1.Sheets[0].Protect = false;
复制代码
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-5-8 09:09:00
地板
#1的问题如何解决求解?导出图表没有图例显示实在是太怪了....
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-8 10:06:00
5#
回复 4楼Hjr2350的帖子

Hjr2350 你好,

感谢你的问题反馈。
问题我已经重现,正在调试中。

如果你能发重现问题 Demo 到论坛将有助于调查问题。

谢谢
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-5-8 12:46:00
6#
由于有太多业务代码,不太方便把我们这块的全部程序给你发过去
我这块图表做成的代码,在1L已经贴出,如果需要其他代码再联系我
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-8 18:55:00
7#
回复 6楼Hjr2350的帖子

如果通过以下代码,你那边还会出问题吗?

  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.Sheets[0].Cells[0, 1].Text = "二月";
  4.             this.fpSpread1.Sheets[0].Cells[0, 2].Text = "三月";

  5.             this.fpSpread1.Sheets[0].Cells[1, 0].Text = "衣服";
  6.             this.fpSpread1.Sheets[0].Cells[2, 0].Text = "家电";

  7.             this.fpSpread1.Sheets[0].Cells[1, 1].Text = "11";
  8.             this.fpSpread1.Sheets[0].Cells[1, 2].Text = "12";
  9.             this.fpSpread1.Sheets[0].Cells[2, 1].Text = "14";
  10.             this.fpSpread1.Sheets[0].Cells[2, 2].Text = "20";

  11.             this.fpSpread1.Sheets[0].AddChart(new FarPoint.Win.Spread.Model.CellRange(0, 0, 3, 3), typeof(FarPoint.Win.Chart.BarSeries), 500, 500, 0, 0);
  12.             this.fpSpread1.SaveExcel("test.xls");
  13.         }
复制代码
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-5-9 09:27:00
8#
回复 6楼Hjr2350的帖子

如果通过以下代码,你那边还会出问题吗?
[code]
private void ......
iceman 发表于 2013-5-8 18:55:00

看到的比较晚不好意思,我这没有问题.
但是我感觉和我1L有问题代码AddChart方法基本一样,不知如何解决的?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-9 11:35:00
9#
回复 8楼Hjr2350的帖子

Hjr2350 你好,
不好意思,因为我这边暂时无法重现你的问题,所以,为了进一步调查问题。
希望你重新制作一个可以重现问题的 Demo。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-5-9 15:45:00
10#
回复 9楼iceman的帖子

我又看了下我的代码发现,我这块的AddChart的使用还是有不同的
我这块的AddChart
  1. fpSpread_Table.ActiveSheet.AddChart(0, 0, typeof(BarSeries), fpSpread_Table.Width - 30, 385, 0, 0);
复制代码

因为如果采用
  1. Function AddChart( _
  2.    ByVal cellRanges() As CellRange, _
  3.    ByVal seriesType As Type, _
  4.    ByVal width As Integer, _
  5.    ByVal height As Integer, _
  6.    ByVal x As Integer, _
  7.    ByVal y As Integer _
  8. ) As SpreadChart
复制代码

这种方式,我不知道如何对其中绑定数据源的格式做操作
我将我这块的Demo给你发过去,你看看如何能达到我现在的要求,而且可以正常输出Excel
这两天麻烦了,谢谢

复件 Test_DragDrop.rar (867.59 KB, 下载次数: 2032)
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部