找回密码
 立即注册

QQ登录

只需一步,快速开始

michaelcai4703

注册会员

12

主题

29

帖子

95

积分

注册会员

积分
95

活字格认证微信认证勋章

michaelcai4703
注册会员   /  发表于:2016-10-31 18:48  /   查看:4242  /  回复:8
本帖最后由 michaelcai4703 于 2016-11-1 13:26 编辑

导出的代码:

private void tsBtnExcelReport_Click(object sender, EventArgs e)
        {
            TabPage page = tabBody.SelectedTab;
            string pageName = page.ToString();
            C1FlexGrid c1FlexGrid = page.Controls[0] as C1FlexGrid;
            int rowCount=c1FlexGrid.Rows.Count;
            if (rowCount < 1)
            {
                return;
            }
           
            SaveFileDialog sfd = new SaveFileDialog();
            
            sfd.Filter = "Excel (*.xls)|*.xls";
            sfd.FileName = string.Format("{0}_系统构成_{1}_{2}.xls",ProjNum, page.Text,DateTime.Now.ToString("yyyyMMddHHmmssfff"));
            sfd.FileName = sfd.FileName.Replace('|', '_').Replace('/', '_');
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                FileFlags flag = new FileFlags();
                flag = FileFlags.AsDisplayed | FileFlags.IncludeFixedCells | FileFlags.SaveMergedRanges;
                c1FlexGrid.SaveExcel(sfd.FileName, flag);
                System.Diagnostics.Process.Start(sfd.FileName);
            }
        }
  
-------------------------------------------------------------------------------------------------------------------
代码中设置了
  flag = FileFlags.AsDisplayed | FileFlags.IncludeFixedCells | FileFlags.SaveMergedRanges;

显示的有边框,导出到excel中,边框丢失,不知到问题出在哪里?



本帖子中包含更多资源

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

x

8 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-11-1 09:46:05
沙发
因为不太清楚您是如何设置表格的,可否发一个简单可以重现的demo
回复 使用道具 举报
michaelcai4703
注册会员   /  发表于:2016-11-1 10:03:02
板凳
dexteryao 发表于 2016-11-1 09:46
因为不太清楚您是如何设置表格的,可否发一个简单可以重现的demo

麻烦你发我一个C1FelxGrid 导出为Excel ,所见即所得,且有边框的Demo给我吧,我比较一下
回复 使用道具 举报
michaelcai4703
注册会员   /  发表于:2016-11-1 13:26:48
地板
dexteryao 发表于 2016-11-1 09:46
因为不太清楚您是如何设置表格的,可否发一个简单可以重现的demo

demo放上去,帮我看一下,急用,谢谢
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-11-1 14:48:34
5#
您设置了Alternate。 导出前取消一下


                c1FlexGrid.Styles.Alternate.BackColor = Color.Transparent;
                c1FlexGrid.SaveExcel(sfd.FileName, pageName, flag);
                c1FlexGrid.Styles.Alternate.BackColor = Color.AliceBlue;
回复 使用道具 举报
michaelcai4703
注册会员   /  发表于:2016-11-1 15:41:24
6#
dexteryao 发表于 2016-11-1 14:48
您设置了Alternate。 导出前取消一下

用上面的代码设置之后,不一样没有实线边框吗?你测试的有边框吗?
回复 使用道具 举报
michaelcai4703
注册会员   /  发表于:2016-11-1 15:45:18
7#
dexteryao 发表于 2016-11-1 14:48
您设置了Alternate。 导出前取消一下

用上面的代码设置之后,不一样没有实线边框吗?你测试的有边框吗?

本帖子中包含更多资源

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

x
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-11-1 16:55:44
8#
明白了, 我再试下。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-11-2 17:45:40
9#
很抱歉回复晚了。
C1FlexGrid不支持Styles导出到Excel,您的Demo中的Border边框是通过Styles设置,因此不支持导出。
这是因为C1FlexGrid的样式和Excel的样式是完全不一样的,没有办法对应和兼容。

如果想要实现这个需求,一个可能的解决方案就是,使用ComponentOne的另一个控件C1Excel控件。
基本的解决思路就是:使用C1Excel导入数据,设置样式,然后通过Save方法导出到Excel。
代码参考:
  1. C1XLBook excelBook = new C1XLBook();
  2. excelBook.Load(filename);

  3. XLSheet sheet = excelBook.Sheets[0];

  4. //set Linestyle of one specific cell. Note: if the cell has no "Style" property, we have to create it.
  5. XLCell currentCell = sheet[row, col];
  6. if (currentCell.Style == null)
  7. {
  8.   currentCell.Style = new XLStyle(sheet.Book);
  9. }

  10. currentCell.Style.BorderColorTop = Color.Black;
  11. currentCell.Style.BorderTop = XLLineStyleEnum.Thick;

  12. //Save excel file in Excel97-2003 format:
  13. excelBook.Save (filename, FileFormat.Biff8);
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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