C#导出带格式的Excel

 

代码里的地址我就不删除了,这是我亲戚的汽配店,各位看到的亲们还希望有机会的话多去光顾一下啊!刚起步阶段,有点艰难。


        public void DataTabletoExcel(int Id)
        {
            OrderModel order = BLL.GetModel(Id);
            if (order == null)
            { return; }
            ///先得到行数
            int rowNum = order.SubList.Count;


            ///声明一个应用程序类实例
            Application xlApp = new ApplicationClass();


            //xlApp.DefaultFilePath = "";  ///默认文件路径,将其设置路径后发现没什么变化。导出excel的路径还是在参数strFileName里设置
            //xlApp.DisplayAlerts = true;
            //xlApp.SheetsInNewWorkbook = 1;///返回或设置 Microsoft Excel 自动插入到新工作簿中的工作表数目。Long 类型,可读写。设置为2之后没发现什么区别
            //创建一个新工作簿
            Workbook xlBook = xlApp.Workbooks.Add();
            ///在工作簿中得到sheet。
            _Worksheet oSheet = (_Worksheet)xlBook.Worksheets[1];
            #region 绘制列
            ///自定义方法,想sheet中绘制列
            RangeTitle(oSheet, "A1", "E1", "**@@**");
            //第二行
            RangeBuild(oSheet, "A2", "A2", "收款人:" + order.Creator);
            RangeBuild(oSheet, "B2", "C2", "订单号:" + order.OrderCode);
            RangeBuild(oSheet, "D2", "E2", "日期:"+ order.CreateTime);


            //商品行
            RangeBuild(oSheet, "A3", "A3", "商品名称");
            RangeBuild(oSheet, "B3", "B3", "商品编码");
            RangeBuild(oSheet, "C3", "C3", "售价");
            RangeBuild(oSheet, "D3", "D3", "数量");
            RangeBuild(oSheet, "E3", "E3", "金额");

            #endregion

            

            for (int i = 0; i < rowNum; i++)
            {//下面注释掉的其实可以不调用单元格设置,如果的datatable用两个for循环会简单很多
                //xlApp.Cells[i + 4, 1] = order.SubList[i].ProductName;
                //xlApp.Cells[i + 4, 2] = order.SubList[i].ProductCode;
                //xlApp.Cells[i + 4, 3] = order.SubList[i].RealPrice;
                //xlApp.Cells[i + 4, 4] = order.SubList[i].QTY;
                //xlApp.Cells[i + 4, 5] = order.SubList[i].QTY * order.SubList[i].RealPrice;
                RangeFoot(oSheet, xlApp.Cells[i + 4, 1], xlApp.Cells[i + 4, 1], order.SubList[i].ProductName);
                RangeFoot(oSheet, xlApp.Cells[i + 4, 2], xlApp.Cells[i + 4, 2], order.SubList[i].ProductCode); 
                RangeFoot(oSheet, xlApp.Cells[i + 4, 3], xlApp.Cells[i + 4, 3], order.SubList[i].RealPrice.ToString());
                RangeFoot(oSheet, xlApp.Cells[i + 4, 4], xlApp.Cells[i + 4, 4], order.SubList[i].QTY.ToString());
                RangeFoot(oSheet, xlApp.Cells[i + 4, 5], xlApp.Cells[i + 4, 5], (order.SubList[i].QTY * order.SubList[i].RealPrice).ToString());
            }
            //xlApp.Cells[rowNum + 4, 1] = "合计:";
            //xlApp.Cells[rowNum + 4, 5] = order.NetAMT;
            RangeBuild(oSheet, xlApp.Cells[rowNum + 4, 1], xlApp.Cells[rowNum + 4, 1], "合计:");
            string value= NoToChinese(Convert.ToDecimal(order.NetAMT));
            RangeBuild(oSheet, xlApp.Cells[rowNum + 4, 2] ,xlApp.Cells[rowNum + 4, 4], value);
            RangeBuild(oSheet, xlApp.Cells[rowNum + 4, 5], xlApp.Cells[rowNum + 4, 5], order.NetAMT.ToString());


            RangeFoot(oSheet, xlApp.Cells[rowNum + 5, 1], xlApp.Cells[rowNum + 5, 2], " 地址: 衡阳市石鼓区中亿汽贸城A区18栋113号");
            RangeFoot(oSheet, xlApp.Cells[rowNum + 5, 3], xlApp.Cells[rowNum + 5, 5], "联系电话: 0734-8163809/窦建波:14789301846");
            RangeFoot(oSheet, xlApp.Cells[rowNum + 6, 1], xlApp.Cells[rowNum + 6, 5], "主营类目:内饰加装(豪华座椅坐垫,脚垫,箱垫、一键启动、360度无缝记录仪、各种尺寸导航仪、手机支架、充电器等)");
            RangeFoot(oSheet, xlApp.Cells[rowNum + 7, 1], xlApp.Cells[rowNum + 7, 5], "汽车保养(火花塞、品牌润滑油、胎压监测、车衣、太阳膜等)车外装饰(疝气灯、LED灯、电动尾门、前后护栏挡泥板、车窗饰条等)");
            RangeFoot(oSheet, xlApp.Cells[rowNum + 8, 1], xlApp.Cells[rowNum + 8, 5], "汽车安全(防盗器、金点子原子锁、胎压监测等)"); 
            ///保存,路径一块穿进去。否则回到一个很奇妙的地方,貌似是system32里 temp下....


            oSheet.SaveAs(@"E:\GithUP\DaZhuan\DaZhuanWeb\OrderExcel\" + order.OrderCode);
          // oSheet.SaveAs( path);
        }


        private static void RangeBuild(_Worksheet oSheet, object startcell, object endcell, string value)
        {
            ///创建一个区域对象。第一个参数是开始格子号,第二个参数是终止格子号。比如选中A1——D3这个区域。
            Range range = (Range)oSheet.get_Range(startcell, endcell);
            ///合并方法,0的时候直接合并为一个单元格
            range.Merge(0);
            ///合并单元格之后,设置其中的文本
            range.Value = value;
            //横向居中
            range.HorizontalAlignment = XlVAlign.xlVAlignCenter;
            ///字体大小
            range.Font.Size = 12;
            ///字体
            range.Font.Name = "黑体";
            ///行高
            range.RowHeight = 14;
            //自动调整列宽
            range.EntireColumn.AutoFit();
            //填充颜色
            range.Interior.ColorIndex = 20;
            //设置单元格边框的粗细
            range.Cells.Borders.LineStyle = 1;
        }


        private static void RangeFoot(_Worksheet oSheet, object startcell, object endcell, string value)
        {
            ///创建一个区域对象。第一个参数是开始格子号,第二个参数是终止格子号。比如选中A1——D3这个区域。
            Range range = (Range)oSheet.get_Range(startcell, endcell);
            ///合并方法,0的时候直接合并为一个单元格
            range.Merge(0);
            ///合并单元格之后,设置其中的文本
            range.Value = value;
            //横向居中
            range.HorizontalAlignment = XlVAlign.xlVAlignCenter;
            ///字体大小
            range.Font.Size = 10;
            //自动调整列宽
            range.EntireColumn.AutoFit();
            //填充颜色
            range.Interior.ColorIndex = 20;
            //设置单元格边框的粗细
            range.Cells.Borders.LineStyle = 1;
        }


        private static void RangeTitle(_Worksheet oSheet, string startcell, string endcell, string value)
        {
            ///创建一个区域对象。第一个参数是开始格子号,第二个参数是终止格子号。比如选中A1——D3这个区域。
            Range range = (Range)oSheet.get_Range(startcell, endcell);
            ///合并方法,0的时候直接合并为一个单元格
            range.Merge(0);
            ///合并单元格之后,设置其中的文本
            range.Value = value;
            //横向居中
            range.HorizontalAlignment = XlVAlign.xlVAlignCenter;
            ///字体大小
            range.Font.Size = 24;
            ///字体
            range.Font.Name = "黑体";
            ///行高
            range.RowHeight = 32;
            //自动调整列宽
            range.EntireColumn.AutoFit();
            //填充颜色
            range.Interior.ColorIndex = 20;
            //设置单元格边框的粗细
            range.Cells.Borders.LineStyle = 1;
        }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值