服务器端对Excel操作的心得体会

做了近两个多月的小程序员了,总觉得该写些什么了.把前段时间对服务器端Excel的操作心得体会总结下吧.首先说说任务吧,这个对Excel的操作不是简单的操作是,用程序代码操作Excel,要求实现XXXX小单的套打(所谓套打,就是按照固定格式打印。)由于,XXX小单的页数,不固定,所以要求程序能够识别出,小单的页数,然后再打印。其中第一页是个模板,在Excel中写好了,这个程序处理问题不大,但是如果页数多了,就要采用程序程序内部复制的功能,要求采用程序来复制Excel模板的格式。别看,说起来简单,但是操作起来有些困难,又要考虑到,服务器端和客户端的不同之出。我采用JavaScript方式实现。以下是对程序对Excel操作的代码:(备注:本文中的'XXX代表机密信息,不易公开。)
private void TSExportWTDXY()
        {
            //新表单在Excel中的位置
           int i = 51 + kexcel * 30;
           //用来处理序号
           int j = i;
         xxdc = xxdc + "oSheet.Cells('"+i+"',1).Value =''XXX;";
           xxdc = xxdc + "oSheet.Range( oSheet.Cells('" + i + "',1),oSheet.Cells('" + i + "',15)).HorizontalAlignment =-4108;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + i + "',1), oSheet.Cells('" + i + "',15)).mergecells=true;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 1) + "',1).Value =''XXX';";
            xxdc = xxdc + "oSheet.Range( oSheet.Cells('" + (i + 1) + "',1),oSheet.Cells('" + (i + 1) + "',15)).HorizontalAlignment =-4108;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 1) + "',1), oSheet.Cells('" + (i + 1) + "',15)).mergecells=true;";
            xxdc = xxdc + "oSheet.Cells('" + (i+2) + "',1).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 2) + "',3).Value =oSheet.Cells(3, 3).Value ;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 2) + "',1), oSheet.Cells('" + (i + 2) + "',2)).mergecells=true;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 2) + "',3), oSheet.Cells('" + (i + 2) + "',8)).mergecells=true;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 2) + "',9).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 2) + "',11).Value =oSheet.Cells(2,12).Value;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 2) + "',9), oSheet.Cells('" + (i + 2) + "',10)).mergecells=true;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 2) + "',11), oSheet.Cells('" + (i + 2) + "',15)).mergecells=true;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',1).Value =''XXX';";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',2).Value =''XXX;";
            xxdc = xxdc + "oSheet.Range( oSheet.Cells('" + (i + 3) + "',2),oSheet.Cells('" + (i + 3) + "',3)).HorizontalAlignment =-4108;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 3) + "',2), oSheet.Cells('" + (i + 3) + "',3)).mergecells=true;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',4).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',5).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',6).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',7).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',8).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',9).Value =''XXX;";
            xxdc = xxdc + "oSheet.Range( oSheet.Cells('" + (i + 3) + "',9),oSheet.Cells('" + (i + 3) + "',10)).HorizontalAlignment =-4108;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 3) + "',9), oSheet.Cells('" + (i + 3) + "',10)).mergecells=true;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',11).Value =''XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',12).Value =''XXX;";
            xxdc = xxdc + "oSheet.Range( oSheet.Cells('" + (i + 3) + "',12),oSheet.Cells('" + (i + 3) + "',13)).HorizontalAlignment =-4108;";
            xxdc = xxdc + "oSheet.Range(oSheet.Cells('" + (i + 3) + "',12), oSheet.Cells('" + (i + 3) + "',13)).mergecells=true;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',14).Value =''XXX'XXX;";
            xxdc = xxdc + "oSheet.Cells('" + (i + 3) + "',15).Value ='XXX;";
            //序号处理
           for (i = i + 4; i <= 50 + (kexcel + 1) * 30; i++)
            {
                xxdc = xxdc + "oSheet.Cells('" + i + "',1).Value ='" + (i - j-3) + "';";
                xxdc = xxdc + "oSheet.Range( oSheet.Cells('" + i + "',1),oSheet.Cells('" + i + "',1)).HorizontalAlignment =-4108;";
                if (i - j - 3 == 20)
                    break;
            }
        }

这段代码就实现了,模板的复制,可是看起来效率不高,可是我却让我花了很长时间,才搞出来的。后来我又整理出下面的这段代码,这段代码可是很有参考价值的哦,效率优于上面的代码,而且参考很多外网,尤其要感谢印度XXX.NET.com.。

        private void NewExporWTDXY()
        {
            //新表单在Excel中的位置
            int j = 51 + kexcel * 30;
            xxdc = xxdc + "oSheet.Range(oSheet.Cells(27,1),oSheet.Cells(50,15)).Copy();";
            xxdc = xxdc + "oSheet.Cells('" + j + "',1).PasteSpecial();";
            //XX单号
            xxdc = xxdc + "oSheet.Cells('" + (j+2) + "',3).Value =oSheet.Cells(3,3).Value;";
            //XXXX      
           xxdc = xxdc + "oSheet.Cells('" + (j + 2) + "',11).Value =oSheet.Cells(2,12).Value;";
            for (int i = 27; i <= 50; i++)
            {
                xxdc = xxdc + "oSheet.Rows('" + j + "').RowHeight = oSheet.Rows('" + i + "').RowHeight;";
                j++;
            }

        }
备注:这段代码中,有几句是很值得推敲的。网上也很少有记载。
关于代码的解释,我将在后续的日志中给出。 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值