找回密码
 立即注册

QQ登录

只需一步,快速开始

jim_hujun

初级会员

14

主题

47

帖子

464

积分

初级会员

积分
464

活字格认证

jim_hujun
初级会员   /  发表于:2015-1-4 10:24  /   查看:13085  /  回复:15
有几个问题不知道如何解决,使用的是C1DataGrid
1:合并单元格后,字体显示能否居中,下图是当前效果


2:现在使用的导出表格,导出代码如下,但是导出后,导出的单元格没有合并,同时能还想在添加标题列呢?当前实现效果例如下图


这是想实现的导出效果,在原有基础上,添加表格线,标题列等


  1. var options = new ExcelSaveOptions()
  2.             {
  3.                 FileFormat = ExcelFileFormat.Xlsx,
  4.                 KeepColumnWidths = true,
  5.                 KeepRowHeights = true
  6.             };

  7.             var excelExt = options.FileFormat.ToString();

  8.             var dialog = new System.Windows.Controls.SaveFileDialog()
  9.             {
  10.                 DefaultExt = "*." + excelExt,
  11.                 DefaultFileName = fileName+"_"+DateTime.Now.ToString("yyyyMMdd"),
  12.                 //Filter = "Excel " + excelExt + " (*." + excelExt + ")|*." + excelExt + "|All files (*.*)|*.*",
  13.                 Filter = "Execl2007 files (*.xlsx)|*.xlsx|Execl2003 files (*.xls)|*.xls",
  14.             };

  15.             if (dialog.ShowDialog() == false) return;

  16.             using (var stream = dialog.OpenFile())
  17.             {
  18.                 grid.Save(stream, options);
  19.             }
复制代码

本帖子中包含更多资源

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

x

15 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-1-4 19:17:00
沙发
回复 1楼jim_hujun的帖子

你的问题已经收到,明天给您反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-5 12:23:00
板凳
回复 1楼jim_hujun的帖子

1。可以设置单元格的HorizontalContentAlignmen为Center。
2. 目前C1DataGrid还不支持合并单元格导出到excel的功能。
另外也无法在导出之后,在添加表格线,标题列等信息。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2015-1-5 13:42:00
地板
回复 3楼Alice的帖子

那是否有其他控件可以支持到这样类型格式的导出?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-5 15:16:00
5#
回复 4楼jim_hujun的帖子

C1FlexGrid支持合并单元格的导出。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2015-1-6 09:51:00
6#
回复 5楼Alice的帖子

那我想增加表头,做成上面的格式通过flexgrid
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-6 14:06:00
7#
回复 6楼jim_hujun的帖子

可以设计C1FlexGrid的多行列头。设计多列头是通过如下步骤:
1.使用flexGrid.Columns.Add和flexGrid.Rows.Add添加列和行。
2.flexGrid.ColumnHeaders.Rows.Add(new Row()); 在列头添加第二行,实现多行列头。
3.flexGrid.ColumnHeaders[row, column]设置Caption内容。
4.使用AllowMerging属性对列头进行合并。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2015-1-7 17:01:00
8#
回复 7楼Alice的帖子

你好 我在导出里做了处理,解决了部分问题,但是还是有部分没有解决,代码如下

  1. using (var stream = dialog.OpenFile())
  2.             {
  3.                 C1FlexGrid flex = new C1FlexGrid();
  4.                 flex.ItemsSource = grid.ItemsSource;
  5.                 flex.ColumnHeaders.Rows.Add(new C1.Silverlight.FlexGrid.Row());

  6.                 C1XLBook book = new C1XLBook();
  7.                 book.Sheets.Clear();
  8.                 XLSheet xlSheet = book.Sheets.Add("Sheet1");
  9.                
  10.                 for (int i = 0; i < 2; i++)
  11.                 {
  12.                     for (int j = 0; j < grid.Columns.Count; j++)
  13.                     {
  14.                         List<string> lscolHeader = (List<string>)(grid.Columns[j].Header);
  15.                         string colHeader = "";
  16.                         if (lscolHeader.Count > i)
  17.                             colHeader = lscolHeader[i];
  18.                         flex.ColumnHeaders[i, j] = colHeader;                        
  19.                     }
  20.                 }

  21.                 //合并列
  22.                 for (int i = 0; i < 2; i++)
  23.                 {
  24.                     for (int j = 0; j < grid.Columns.Count; j++)
  25.                     {
  26.                         if (i == 0 &amp;&amp; (flex.ColumnHeaders[i, j].ToString() == "" || flex.ColumnHeaders[i + 1, j].ToString() == "" || flex.ColumnHeaders[i, j].ToString() == flex.ColumnHeaders[i + 1, j].ToString()))//第一行
  27.                         {
  28.                             xlSheet.MergedCells.Add(new XLCellRange(i, i + 1, j, j));
  29.                         }
  30.                     }
  31.                 }

  32.                 //并行
  33.                 for (int j = 0; j < grid.Columns.Count; j++)
  34.                 {
  35.                     int lastColumNum = j;
  36.                     for (int m = j + 1; m < grid.Columns.Count; m++)
  37.                     {
  38.                         if (flex.ColumnHeaders[0, j].ToString() == flex.ColumnHeaders[0, m].ToString())
  39.                         {
  40.                             lastColumNum = m;
  41.                         }
  42.                     }
  43.                     if (lastColumNum > j)
  44.                     {
  45.                         xlSheet.MergedCells.Add(new XLCellRange(0, 0, j, lastColumNum));
  46.                         j = lastColumNum;
  47.                     }

  48.                 }
复制代码

现在表头我已经合并完成了,我想在表头上方添加一行标题,其实就是添加和相同列数的单元格做合并,和内容结束后插入一行写时间,改如何添加呢?

本帖子中包含更多资源

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

x
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2015-1-7 17:02:00
9#
回复 7楼Alice的帖子

比较着急 能否帮我加急处理下 谢谢
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-7 19:10:00
10#
回复 8楼jim_hujun的帖子

只能将添加一列的列头,合并成一行后添加文字,然后导出。
导出后无法添加。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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