找回密码
 立即注册

QQ登录

只需一步,快速开始

cngrain

中级会员

32

主题

118

帖子

656

积分

中级会员

积分
656

活字格认证

cngrain
中级会员   /  发表于:2012-3-2 14:38  /   查看:5563  /  回复:5
从后台获取一个datetable后,添加自定义表头,, 并到出为EXCEL,如何操作?
目前代码为:
DataTable dt = GetAllCorpInfo();
exportSpread.DataSource = dt;
exportSpread.saveExcel(fileName);

表头如下:

jpg

jpg

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-3-2 16:05:00
沙发

回复 1# cngrain 的帖子

请参考下面的代码:
  1.     fpSpread1.ActiveSheet.ColumnHeader.RowCount = 2;
  2.     fpSpread1.ActiveSheet.AddColumnHeaderSpanCell(0, 0, 1, 5);
  3.     fpSpread1.ActiveSheet.ColumnHeader.Cells[0, 0].Text = "企业基本信息";
  4.     fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 0].Text = "企业代码";
  5.     fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 1].Text = "企业名称";
  6.     fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 2].Text = "省";
  7.     fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 3].Text = "市";
  8.     fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 4].Text = "县";
复制代码
回复 使用道具 举报
cngrain
中级会员   /  发表于:2012-3-16 14:25:00
板凳

表头遮住数据

接着上面的问题,导出是成功了,但是固定的两行表头会遮住两行datatable里的数据,就是前两行数据就看不到了,请问怎么解决
//添加表头
           exportSpread.Sheets[0].ColumnHeader.RowCount = 2;
                exportSpread.Sheets[0].ColumnHeader.Columns.Count = 121;
                StyleInfo sty = new StyleInfo();
                sty.BackColor = Color.DarkGray;
                // sty.Font.Bold = true;
                exportSpread.Sheets[0].ColumnHeader.DefaultStyle = sty;
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 0, 1, 7);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 0].Text = "企业基本信息";
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 7, 1, 11);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 7].Text = "项目基本信息";
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 18, 1, 12);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 18].Text = "投资情况(项目总投资)";
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 30, 1, 12);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 30].Text = "投资情况(上年累计完成投资)";
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 42, 1, 12);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 42].Text = "投资情况(本年度完成投资)";
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 54, 1, 31);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 54].Text = "建设内容及规模(建设规模)";
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 85, 1, 31);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 85].Text = "建设内容及规模(新增能力)";
                exportSpread.Sheets[0].AddColumnHeaderSpanCell(0, 116, 1, 5);
                exportSpread.Sheets[0].ColumnHeader.Cells[0, 116].Text = "其它信息";
                string[] tmp = header.Split(',');
                for (int i = 0 ; i < tmp.Length ; i++)
                {
                    exportSpread.Sheets[0].ColumnHeader.Cells[1, i].Text = tmp;
                }
                exportSpread.Sheets[0].ColumnHeader.Rows[1].Height = 15;
                exportSpread.Sheets[0].Protect = false;
                //获取全部数据
           DataTable dt = BasicInfoManage.GetSelCorpInfoByValue(usersql);
                exportSpread.DataSource = dt;
截图如附件,本来有11条数据的,现在只能看到9条了

无标题.png

49.75 KB, 下载次数: 164

png

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-16 15:00:00
地板

回复 3# cngrain 的帖子

cngrain  你好,
数据绑定后,Spread 自动生成行,当我们保存列头时,Spread 列头占据表单前两行,所以数据显示不全。所以解决方法如下:
  1.             this.exportSpread.Sheets[0].AddRows(11, 2);
  2.             this.exportSpread.SaveExcel(@"E:\test.xls", FarPoint.Excel.ExcelSaveFlags.SaveCustomColumnHeaders);
  3.             this.exportSpread.Sheets[0].RemoveRows(11, 2);
复制代码
回复 使用道具 举报
cngrain
中级会员   /  发表于:2012-3-16 17:16:00
5#

回复 4# iceman 的帖子

非常感谢,但是 this.exportSpread.Sheets[0].RemoveRows(11, 2);这一行就不需要了吧
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-16 17:23:00
6#

回复 5# cngrain 的帖子

cngrain 你好,

如果缺少该行代码,表单中会多两行绑定行,破坏当前表单的数据结构。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部