找回密码
 立即注册

QQ登录

只需一步,快速开始

chenhaixia

银牌会员

10

主题

21

帖子

2431

积分

银牌会员

积分
2431

活字格认证

chenhaixia
银牌会员   /  发表于:2012-9-4 10:12  /   查看:5919  /  回复:3
麻烦请教下,导出Excel带chart图表中中文部分是乱码
chart.jpg (20.33 KB, 下载次数: 370)

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-4 13:32:00
沙发
chenhaixia 你好

请问你图表是通过什么方式生成的,能否将完整代码发来看一看,因为该问题可能和图表的生成方式有一定关系。
回复 使用道具 举报
chenhaixia
银牌会员   /  发表于:2012-9-4 13:42:00
板凳
初始图表是xml文件, 填充图表数据的代码如下:
SheetView Sheet = this.fpSpreadContent.Sheets[0];
Sheet.Charts[0].Model.PlotAreas[0].Series.Clear();
DataTable dt = new DataTable();
dt.Columns.Add("名称");
dt.Rows.Add("表价");
dt.Rows.Add("元件");
ClusteredBarSeries Barseries= new ClusteredBarSeries();
Barseries.Overlap = -0.22f;
for (int i = 1; i < Sheet.Rows.Count; i++)
{
if (Sheet.Cells[i, 0].Tag != null)
{
if (Sheet.Cells[i, 0].Text == "True")
  {
//价格
BarSeries series = new BarSeries();
if (!string.IsNullOrEmpty(Sheet.Cells[i, 1].Tag.ToString()))//表价
{
  series.Values.Add(double.Parse(Sheet.Cells[i, 1].Tag.ToString()));
}
else
{
series.Values.Add(0.0);
}
if (!string.IsNullOrEmpty(Sheet.Cells[i, 2].Tag.ToString()))//元件总价
{
series.Values.Add(double.Parse(Sheet.Cells[i, 2].Tag.ToString()));
}
else
{
series.Values.Add(0.0);
}
series.SeriesName = Sheet.Cells[i, 0].Tag.ToString();
series.CategoryNames.DataSource = dt;
series.CategoryNames.DataField = dt.Columns[0].ColumnName;
Barseries.Series.Add(series);
}
}
}
else break;
}
Sheet.Charts[0].Model.PlotAreas[0].Series.Add(Barseries);
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-4 16:22:00
地板
chenhaixia 你好

实在抱歉,你遇到的问题是Sprad图表的一个已知缺陷,如果采用绑定的方式设置CategoryNames,导出到Excel之后会出现乱码。

这儿有两种替代方案
1、将CategoryNames设置成英文名称
2、使用下面的方式添加图表fpSpread1.ActiveSheet.AddChart(new FarPoint.Win.Spread.Model.CellRange(0, 0, 4, 5), typeof(FarPoint.Win.Chart.BarSeries), 500, 300, 0, 100);

请参考附件中的例子:
VS2010 + Spread .NET 6.0.3505

5930_Chart.zip (10.99 KB, 下载次数: 479)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部