找回密码
 立即注册

QQ登录

只需一步,快速开始

haitun1227

中级会员

16

主题

90

帖子

540

积分

中级会员

积分
540

活字格认证

haitun1227
中级会员   /  发表于:2013-9-10 15:41  /   查看:10788  /  回复:15
c1FlexGrid导出excel文件时我想实现按条件分sheet显示。比如我有11笔数据。每一个sheet显示5笔,如何实现?

15 个回复

倒序浏览
gw0506
超级版主   /  发表于:2013-9-10 16:26:00
沙发
最多可以将一个C1FlexGrid中的内容导入到某个Excel文件的指定sheet中,不能将全部内容分别导入不同的Sheet中。
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-9-10 16:30:00
板凳
不能增加sheet显示吗?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-10 17:17:00
地板
关键问题是不能把一个C1FlexGrid中的内容拆开导出。
Spread可以满足你的要求,包括你前面提到的几个问题。
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-9-11 10:28:00
5#
saveDlg.Filter = "Excel????(*.xls)|*.xls|Excel????(*.xlsx)|*.xlsx";

this.grdMain.SaveExcel(saveDlg.FileName, sheetName,FileFlags.None);
为什么导出excel文件是xls时报错,导出xlsx时正确?我想能导出两种格式的。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-11 11:50:00
6#
报的什么错?给我提供个Demo好吗?
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-9-11 12:39:00
7#
先传递数据
           DataTable dt = new DataTable();
            dt.Columns.Add("qq");
            dt.Columns.Add("mm");
            dt.Columns.Add("ww");

            DataRow row = dt.NewRow();
            row["qq"] = " s1 ";
            row["mm"] = "s2";
            row["ww"] = "s3";

            DataRow row2 = dt.NewRow();
            row["qq"] = " d1 ";
            row["mm"] = "d2";
            row["ww"] = "d3";

            DataRow row3 = dt.NewRow();
            row["qq"] = " a1 ";
            row["mm"] = "a2";
            row["ww"] = "a3";

           dt.Rows.Add(row);
            dt.Rows.Add(row2);
            dt.Rows.Add(row3);
我是先把文件选择后数据存在flexgrid上
public void print()
{
                    SaveFileDialog saveDlg = new SaveFileDialog();
                    saveDlg.DefaultExt = "xls|xlsx";
                    saveDlg.FileName = "*.xls;*.xlsx";

                    saveDlg.Filter = "Excel????(*.xls)|*.xls|Excel????(*.xlsx) | *.xlsx";
                    if (saveDlg.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                    this.grdMain.DataSource = null;
                    string[] sheets = c1FlexGrid.LoadExcelSheetNames(saveDlg.FileName);

                    FileFlags flags = FileFlags.LoadMergedRanges;
                    c1FlexGrid.LoadGrid(saveDlg.FileName, FileFormatEnum.Excel, flags);
// count 是dataTable的数此时为3
int count = this.Data.Rows.Count;
                   if(count > 0)
                    {
                        for(int i = 0; i < count; i++)
                        {
                            m = i % detailCount;

                          if( m == 0)
                            {
                                if(!firstPage)
                                {
                                    c1FlexGrid.SaveExcel(saveDlg.FileName, sheetName + (i / detailCount).ToString(), FileFlags.None);
                                }
                    for (int k = 0; k < qqCount; k++)
                                {
                                       if (excelInfo.Rows[k]["aaaaaaaaaaaaaaa"].ToString() == "0")
                                    {
                                           c1FlexGrid.SetData(Conv.GetInt(Column[1]), Conv.GetInt(Column[0]), Data.Rows[1][" qq"]);
                                    }
                                }
}


这是部分代码
如果保存为xls文件时就会在下面这句代码时进入异常catch

this.grdMain.SetData(Conv.GetInt(Column[1]), Conv.GetInt(Column[0]), Data.Rows[1][headerName]);
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-9-11 12:41:00
8#
我是用c1FlexGrid.SaveExcel保存到指定的sheet中
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-11 13:41:00
9#
大段的代码作用不大。因为你代码中有很多自定义的类或方法,我拿到了也无法调试。而且出错的地方应该也就一句。

建议你先把出错信息拿到,看提示是什么问题,然后往回找可能出错的地方。我尝试保存成两种格式的文件,都没有问题。
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-9-11 13:58:00
10#
我试了,如果不数据直接只是保存为excl是可以的,只要加数据就会错。
this.grdMain.SetData(Conv.GetInt(Column[1]), Conv.GetInt(Column[0]), Data.Rows[1][headerName]);
这句话有影响吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部