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