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