找回密码
 立即注册

QQ登录

只需一步,快速开始

visualmaster

银牌会员

16

主题

64

帖子

3892

积分

银牌会员

积分
3892

活字格认证

visualmaster
银牌会员   /  发表于:2015-2-26 11:49  /   查看:9126  /  回复:7
导出的Excel 的单元格的线都是虚线,是有单元格的Style的设置可以改,但是有没有让整个Excel 格式都是默认的,而不是单元格的设置方式?



导出的列是时间格式时,显示的是一个数字,要手动调才行,有办法自动识别时间就设置时间格式吗? 整个列的格式设置时间格式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-2-26 14:11:00
沙发
回复 1楼visualmaster的帖子

1.C1Flexgrid下有Gridline,针对C1FlexGrid的所有横线和竖线。但是只能设置线的颜色,以及是否显示,不能更改线型。
另外一种就是利用CellFactory的CreateCellBorder方法,画Border。

使用CellFactory的方法参考:
Step 1: Define and Assign CellFactory
  1. public class MyCellFactory : C1.WPF.FlexGrid.CellFactory
  2. {
  3.    List<C1.WPF.FlexGrid.CellRange> crw = new List<C1.WPF.FlexGrid.CellRange>();
  4.    public MyCellFactory()
  5.    {
  6.        crw.Add(new C1.WPF.FlexGrid.CellRange(0,0));
  7.        crw.Add(new C1.WPF.FlexGrid.CellRange(1,1));
  8.        crw.Add(new C1.WPF.FlexGrid.CellRange(2,2));
  9.        crw.Add(new C1.WPF.FlexGrid.CellRange(3,3));        
  10.    }

  11.    public override Border CreateCellBorder(C1.WPF.FlexGrid.C1FlexGrid grid, C1.WPF.FlexGrid.CellType cellType, C1.WPF.FlexGrid.CellRange rng)
  12.    {
  13.        Border bdr = base.CreateCellBorder(grid, cellType, rng);
  14.        if (cellType == C1.WPF.FlexGrid.CellType.Cell)
  15.          if (crw.Contains(rng))
  16.          {
  17.            VisualBrush vb = new VisualBrush();
  18.            vb.Visual = new Rectangle() { Height = 10, Width = 40, Stroke = new SolidColorBrush(Colors.Red), StrokeDashArray = new DoubleCollection() { 1.0 } };
  19.             bdr.BorderBrush = vb;         
  20.          }
  21.          return bdr;
  22.     }
  23. }
复制代码


Step2: Assign CellFactory
  1. c1Flexgrid1.CellFactory = new MyCellFactory();
复制代码


2.根据你的描述,你本身设置的列是时间格式,但是导出的时候变成数字了么?
我这里有个导出的excel的例子,将C1FlexGrid导出成excel文件,里面有一列是日期类型,没有重现你的问题。
示例如下,你可以看看作为参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
visualmaster
银牌会员   /  发表于:2015-2-26 15:19:00
板凳
回复 2楼Alice的帖子

1.我说的虚线是用Excel打开导出的文件时,Excel的单元格是虚线框的



2.
Sample Explorer里的实现用的C1XLBook
var book = new C1XLBook();
book.Sheets.Clear();
var xlSheet = book.Sheets.Add(&quot;Sheet1&quot;);
..........

还是你发的Demo时间比较新,但是我运行不起来

Demo运行时出现LC.exe以退出,代码为-1,Sample Explorer 里有几个也出现这个问题,但是新建项目就没问题,是要重新安装Sample嘛?



我建了一个同名的项目,把文件都复制过来,运行导出时到ExcelEngine的 65行出错


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-2-26 16:12:00
地板
回复 3楼visualmaster的帖子

1.C1FlexGrid本身是没有接口支持导出到excel文件的,在这里是需要借助C1Excel来实现。
有关数据以及Format,border的保存都是通过代码定义实现的。
我测试没有重现你的问题,请检查是否在代码中更改了边框,导致保存后变成了虚线。
2.LC.exe是license问题。如果不能运行程序,请尝试将工程进行升级操作,尝试更新c1的dll和license文件。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
visualmaster
银牌会员   /  发表于:2015-2-26 18:03:00
5#
回复 4楼Alice的帖子

这个Demo就是会出虚线

OK,运行起来了,好使,如果传入的是FlexGrid 的数据源而不是FlexGrid就更好了,MVVM传控件还是不好弄的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-2-27 09:05:00
6#
回复 5楼visualmaster的帖子

附件是我运行这个Sample得到的Excel文件。


没有重现你所说的虚线问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
visualmaster
银牌会员   /  发表于:2015-3-3 18:37:00
7#
回复 6楼Alice的帖子




我还是一样,算了,你给的新方法没问题,我还是希望把传控件改成给数据源,然后封装起来,直接调用,这样用着更方便

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-3-4 08:54:00
8#
回复 7楼visualmaster的帖子

好的,谢谢你的反馈。
欢迎你就本次服务评分。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部