生成EXCEL文件

        /// <summary>
        /// 生成附件
        /// </summary>
        public void GenerateAttachment(string yf)
        {
            string dir = AppDomain.CurrentDomain.BaseDirectory + ".\\files";
            string wddmStr = GetWddmString();
            wddmStr = (wddmStr.Length > 12) ? wddmStr.Substring(0, 12) : wddmStr;
            string fileName = string.Format(@"{0}\{1}_{2}.xlsx", dir, OrgName, yf);

            string sqlPart = @"SELECT HH,WDDM,YF,Z 
                                ,CASE WHEN yf='{0}' THEN 'bq' ELSE 'tq' END qj 
	                            FROM dbo.LRB 
	                            WHERE  {1}
		                            AND WDDM IN ({2})
                               ";
            //月份(当月、同期)??
            string sql = string.Format(sqlPart
                , yf
                , new YF(yf).GenerateQjCondition("YF")
                , GetWddmCond());

            //MyCommon.WriteLog(sql);

            DataTable dt = MyCommon.GetDt(sql
                , new SqlConnectConfig("10.29.33.63\\sqlexpress", "TEST", "sa", "szsf").ConnectString);
            if (dt.Rows.Count == 0)
                return;

            Excel.Application excelApp = new Excel.Application();
            excelApp.DisplayAlerts = false;
            excelApp.Visible = true;

            //copy file
            string sourceFile = dir + "\\..\\" + "管理报表-分部利润表-发送模板.xlsx";
            System.IO.File.Copy(sourceFile, fileName);


            Excel.Workbook wb = excelApp.Workbooks.Open(fileName);
            Excel.Worksheet sht;

            sht = wb.Worksheets["模板 管理报表_分部利润表 (本期)"];
            for (int i = 0; i < this.Wddms.Count; i++)
            {
                sht.Cells[6, 5 + i].Value = this.Wddms[i].Pq;
                sht.Cells[7, 5 + i].Value = this.Wddms[i].Wddm;
                sht.Cells[8, 5 + i].Value = this.Wddms[i].Wdmc;
            }
            Excel.Range rng;

            //隐藏列
            rng = sht.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell);
            int lastColumn = rng.Column;
            for (int i = lastColumn; i >= 5; i--)
            {
                rng = sht.Cells[7, i];
                string content = rng.Text;
                if (content.Trim().Equals("分部代码"))
                    rng.EntireColumn.Hidden = true;
            }
            //期间
            rng = sht.Range["B2"];
            rng.Value = string.Format("期间:{0}年{1}月 币种:人民币 单位:元"
                , new YF(yf).Year.ToString()
                , new YF(yf).Month.ToString("00"));


            sht = wb.Worksheets["模板 管理报表_分部利润表 (同期)"];
            for (int i = 0; i < this.Wddms.Count; i++)
            {
                sht.Cells[6, 5 + i].Value = this.Wddms[i].Pq;
                sht.Cells[7, 5 + i].Value = this.Wddms[i].Wddm;
                sht.Cells[8, 5 + i].Value = this.Wddms[i].Wdmc;
            }

            rng = sht.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell);

            lastColumn = rng.Column;
            for (int i = lastColumn; i >= 5; i--)
            {
                rng = sht.Cells[7, i];
                string content = rng.Text;
                if (content.Trim().Equals("分部代码"))
                    rng.EntireColumn.Hidden = true;
            }

            rng = sht.Range["B2"];
            rng.Value = string.Format("期间:{0}年{1}月 币种:人民币 单位:元"
                , new YF(yf).GetSTLY().Substring(0, 4)
                , new YF(yf).GetSTLY().Substring(4, 2));


            sht = wb.Worksheets["Sheet1"];//.Add();
            //string shtName = yf;
            //wb.Save();
            rng = sht.Rows["2:" + sht.UsedRange.Rows.Count.ToString()];
            rng.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);


            MyCommon.FillDtToWorksheet(sht, dt);

            wb.SaveAs(Filename: fileName);
            wb.Close(SaveChanges: true);
            excelApp.Quit();

            this.Files.Add(fileName);
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值