C#导出带格式的Excel

xiaoxiao2021-02-27  406

 

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

        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;         }
转载请注明原文地址: https://www.6miu.com/read-1176.html

最新回复(0)