前端
@{
ViewBag.Title = "OrderChecking";
Layout = "~/Views/Shared/_Form.cshtml";
}
<style>
.topPanel .search .input-group .form-control {
float: left;
width: 100px;
margin-left: 10px;
}
</style>
<script>
$(function () {
gridList();
})
function gridList() {
var $gridList = $("#gridList");
$gridList.dataGrid({
url: "/OrderManage/PurchaseSellOrder/OrderCheckInfo",
height: $(window).height() - 96,
pager: "#gridPager",
sortname: 'CreateDate desc',
viewrecords: true,
colModel: [
{ label: "订单号", name: "OrderNo", width: 180, align: 'left' },
{ label: '买家用户名', name: 'Sendee', width: 80, align: 'left' },
{ label: '买家手机号', name: 'Contact', width: 80, align: 'left' },
{ label: '发货时间', name: 'CreateDate', width: 150, align: 'left' },
{ label: '运输方式', name: 'DeliverName', width: 80, align: 'left' },
{ label: '快递简称', name: 'Abbreviation', width: 80, align: 'left' },
{ label: '地址', name: 'Address', width: 80, align: 'left' }
]
});
$("#btn_search").click(function () {
$gridList.jqGrid('setGridParam', {
postData: { EndTime: $("#EndTime").val(), StartTime: $("#StartTime").val(), KeyWord: $("#txt_DeliverName").val(), OrderNo: $("#txt_Order").val() },
}).trigger('reloadGrid');
});
}
function btn_DownLoad() {
//var filePath;
//try {
// var filePath;
// var objSrc = new ActiveXObject("Shell.Application").BrowseForFolder(0, '请选择保存路径', 0, '');
// if (objSrc != null) {
// filePath = objSrc.Items().Item().Path;
// if (filePath.charAt(0) == ':') {
// alert('请选择文件夹.');
// return;
// }
// }
//} catch (e) {
// alert(e + '请设置IE,单击 工具 菜单 --> Internet选项 --> 安全 --> 自定义级别 --> ActiveX 控件和插件:A.对标记为可安全执行脚本的ActiveX控件执行脚本* --> 启用;B.对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本 --> 启用;C.仅允许经过批准的域在未经提示的情况下使用 ActiveX --> 启用;D.运行 ActiveX 控件和插件 --> 启用。,然后再尝试。');
// return;
//}
$.submitForm({
url: "/OrderManage/PurchaseSellOrder/DownLoadOrderCheckInfo?EndTime=" + $("#EndTime").val() + "&StartTime=" + $("#StartTime").val() + "&KeyWord=" + $("#txt_DeliverName").val() + "&OrderNo=" + $("#txt_Order").val() ,
success: function (returnInfo) {
window.location.href = "../../../" + returnInfo.data;
console.log(returnInfo);
}
});
}
</script>
<form id="form1">
<div class="topPanel">
<div class="toolbar">
<div class="btn-group">
<a class="btn btn-primary" οnclick="$.reload()"><span class="glyphicon glyphicon-refresh"></span></a>
</div>
<script>$('.toolbar').authorizeButton()</script>
</div>
<div class="search">
<table>
<tr>
<td>
<div class="input-group">
<input id="txt_Order" type="text" class="form-control" placeholder="订单号" style="width: 200px;">
<input id="txt_DeliverName" type="text" class="form-control" placeholder="快递名/快递缩写" style="width: 200px;">
<input id="StartTime" name="StartTime" type="text" class="form-control input-wdatepicker" οnfοcus="WdatePicker()" placeholder="起始时间" />
<input id="EndTime" name="EndTime" type="text" class="form-control input-wdatepicker" οnfοcus="WdatePicker()" placeholder="结束时间" />
<a id="NF-DownLoad" class="btn btn-primary dropdown-text" οnclick="btn_DownLoad() "><i class="fa fa-pencil-square-o"></i>导出Excel</a>
<span class="input-group-btn">
<button id="btn_search" type="button" class="btn btn-primary">
<i class="fa fa-search"></i>
</button>
</span>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="gridPanel">
<table id="gridList"></table>
<div id="gridPager"></div>
</div>
</form>
后端
[HttpGet]
[HandlerAjaxOnly]
public ActionResult OrderCheckInfo(Pagination pagination, string StartTime, string EndTime, string KeyWord, string OrderNo)
{
string ApiF_UserId = OperatorProvider.Provider.GetCurrent().F_UserInfoID;
PurchaseOrderApp purchaseOrder_BLL = new PurchaseOrderApp();
SellOrderApp sellOrder_BLL = new SellOrderApp();
OrderDeliverApp orderDeliver_BLL = new OrderDeliverApp();
try
{
DateTime DateStartTime = DateTime.Now.Date;
DateTime DateEndTime = DateTime.Now.Date;
if (!string.IsNullOrEmpty(StartTime))
{
if (DateTime.TryParse(StartTime, out DateStartTime) == false)
return Error("开始时间不正确,请输入正确的时间");
}
if (!string.IsNullOrEmpty(EndTime))
{
if (DateTime.TryParse(EndTime, out DateEndTime) == false)
return Error("结束时间不正确,请输入正确的时间");
}
if (DateStartTime > DateEndTime)
return Error("开始时间不能大于结束时间,请输入正确的时间");
var data = new
{
rows = orderCheckingApp.GetListOrderChecking(pagination, StartTime, EndTime, KeyWord, OrderNo, ApiF_UserId),
total = pagination.total,
page = pagination.page,
records = pagination.records
};
return Content(data.ToJson());
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 导出邮单信息
/// </summary>
/// <param name="StartTime"></param>
/// <param name="EndTime"></param>
/// <param name="KeyWord"></param>
/// <param name="OrderNo"></param>
/// <returns></returns>
[HttpPost]
public ActionResult DownLoadOrderCheckInfo(string StartTime, string EndTime, string KeyWord, string OrderNo)
{
string uploadDate = DateTime.Now.ToString("yyyyMMdd");
string FileEextension = OperatorProvider.Provider.GetCurrent().UserName + "_" + DateTime.Now.Ticks + "_" + ".xls";
string filePath = string.Format(@"UploadExcle\{0}\{1}", uploadDate, FileEextension); //保存地址
string filePath_Return = string.Format(@"UploadExcle/{0}/{1}", uploadDate, FileEextension); //返回地址
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
string path = Path.GetDirectoryName(str + filePath); //创建文件夹,保存文件
Directory.CreateDirectory(path);
string ApiF_UserId = OperatorProvider.Provider.GetCurrent().F_UserInfoID;
PurchaseOrderApp purchaseOrder_BLL = new PurchaseOrderApp();
SellOrderApp sellOrder_BLL = new SellOrderApp();
OrderDeliverApp orderDeliver_BLL = new OrderDeliverApp();
try
{
DateTime DateStartTime = DateTime.Now.Date;
DateTime DateEndTime = DateTime.Now.Date;
if (!string.IsNullOrEmpty(StartTime))
{
if (DateTime.TryParse(StartTime, out DateStartTime) == false)
return Error("开始时间不正确,请输入正确的时间");
}
if (!string.IsNullOrEmpty(EndTime))
{
if (DateTime.TryParse(EndTime, out DateEndTime) == false)
return Error("结束时间不正确,请输入正确的时间");
}
if (DateStartTime > DateEndTime)
return Error("开始时间不能大于结束时间,请输入正确的时间");
var data = orderCheckingApp.GetListOrderChecking_DownLoad(StartTime, EndTime, KeyWord, OrderNo, ApiF_UserId);
DataTable dt = ToDataTable(data);
NPOIExcel Ex = new NPOIExcel();
if (Ex.ToExcel(dt, "邮单信息", "Data", str + filePath))
return Success("恭喜,导出Excel成功!", filePath_Return);
else
return Error("导出Excel失败!");
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// List 转换成Table
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="items"></param>
/// <returns></returns>
private DataTable ToDataTable<T>(List<T> items)
{
var tb = new DataTable(typeof(T).Name);
PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in props)
{
Type t = GetCoreType(prop.PropertyType);
tb.Columns.Add(prop.Name, t);
}
foreach (T item in items)
{
var values = new object[props.Length];
for (int i = 0; i < props.Length; i++)
{
values[i] = props[i].GetValue(item, null);
}
tb.Rows.Add(values);
}
return tb;
}
/// <summary>
/// Return underlying type if type is Nullable otherwise return the type
/// </summary>
public static Type GetCoreType(Type t)
{
if (t != null && IsNullable(t))
{
if (!t.IsValueType)
{
return t;
}
else
{
return Nullable.GetUnderlyingType(t);
}
}
else
{
return t;
}
}
/// <summary>
/// Determine of specified type is nullable
/// </summary>
public static bool IsNullable(Type t)
{
return !t.IsValueType || (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>));
}
/// <summary>
/// 导出到Excel
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
public bool ToExcel(DataTable table)
{
FileStream fs = new FileStream(this._filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
IWorkbook workBook = new HSSFWorkbook();
this._sheetName = this._sheetName.IsEmpty() ? "sheet1" : this._sheetName;
ISheet sheet = workBook.CreateSheet(this._sheetName);
//处理表格标题
IRow row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue(this._title);
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, table.Columns.Count - 1));
row.Height = 500;
ICellStyle cellStyle = workBook.CreateCellStyle();
IFont font = workBook.CreateFont();
font.FontName = "微软雅黑";
font.FontHeightInPoints = 17;
cellStyle.SetFont(font);
cellStyle.VerticalAlignment = VerticalAlignment.Center;
cellStyle.Alignment = HorizontalAlignment.Center;
row.Cells[0].CellStyle = cellStyle;
//处理表格列头
row = sheet.CreateRow(1);
for (int i = 0; i < table.Columns.Count; i++)
{
row.CreateCell(i).SetCellValue(table.Columns[i].ColumnName);
row.Height = 350;
sheet.AutoSizeColumn(i);
}
//处理数据内容
for (int i = 0; i < table.Rows.Count; i++)
{
row = sheet.CreateRow(2 + i);
row.Height = 250;
for (int j = 0; j < table.Columns.Count; j++)
{
row.CreateCell(j).SetCellValue(table.Rows[i][j].ToString());
sheet.SetColumnWidth(j, 256 * 15);
}
}
//写入数据流
workBook.Write(fs);
fs.Flush();
fs.Close();
return true;
}
/// <summary>
/// 导出到Excel
/// </summary>
/// <param name="table"></param>
/// <param name="title"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
public bool ToExcel(DataTable table, string title, string sheetName, string filePath)
{
this._title = title;
this._sheetName = sheetName;
this._filePath = filePath;
return ToExcel(table);
}