post完成导出Excel

get以为参数有长度限制所以如果传送参数比较多的话,还是得使用post传值。

public JsonResult Export(GridPager pager, DateTime? beginDate, DateTime? endDate, string SAPPO, string ProductCode, string PackNo, string LotNo, string MaterialCode, string MaterialPackNo, string MaterialLotNo,string PickStatus)
        {
            List<PM_IngredientsModel> list = m_BLL.GetListExprot(ref pager, beginDate, endDate, SAPPO, ProductCode, PackNo, LotNo, MaterialCode, MaterialPackNo, MaterialLotNo, 2, PickStatus);
            JArray jObjects = new JArray();
            foreach (var item in list)
            {
                var jo = new JObject();
                jo.Add("单据日期", item.ProduceDate);
                jo.Add("单据号", item.DocNumber);
                jo.Add("工单号", item.SAPNo);
                jo.Add("成品品番", item.ProductCode);
                jo.Add("成品品名", item.ProductName);
                jo.Add("品番", item.MaterialCode);
                jo.Add("品名", item.MaterialName);
                jo.Add("现品票票号", item.PackNo);
                jo.Add("现品票批次", item.PackLotNo);
                jo.Add("创建时间", item.CreateTime);
                jObjects.Add(jo);
            }
            var dt = JsonConvert.DeserializeObject<System.Data.DataTable>(jObjects.ToString());
            var exportFileName = string.Concat(
                "File",
                DateTime.Now.ToString("yyyyMMddHHmmss"),
                ".xlsx");
            //直接生成Excel表格
            var a = toexcel(exportFileName, dt, exportFileName);
            return Json(JsonHandler.CreateMessage(1, "OK", "/Upload/FileDownload/" + exportFileName));
        }
public bool toexcel(string excelname, System.Data.DataTable dt, string path)
        {
            bool re = false;
            if (dt.Rows.Count < 0)
            {
                return false;
            }
            else
            {
                //创建新的excel
                Microsoft.Office.Interop.Excel.Application exApp = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook exBook = exApp.Workbooks.Add(true);
                Microsoft.Office.Interop.Excel.Worksheet exSheet = exBook.Worksheets[1];

                string[] aaa = new string[dt.Columns.Count];
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    //exSheet.Cells[1][i+1] = dt.Columns[i].ColumnName.ToString();
                    aaa[i] = dt.Columns[i].ColumnName.ToString();
                    exSheet.Range[exSheet.Cells[1, 1], exSheet.Cells[1, dt.Columns.Count]].Value2 = aaa;
                }
                int rowNum = dt.Rows.Count;
                int colNum = dt.Columns.Count;
                string[,] finalData = new string[rowNum, colNum];
                for (int i = 0; i < rowNum; i++)
                {
                    for (int j = 0; j < colNum; j++)
                    {
                        finalData[i, j] = dt.Rows[i][j].ToString();

                    }
                }
                exSheet.Range[exSheet.Cells[2, 1], exSheet.Cells[rowNum + 1, colNum]].Value2 = finalData;
                exSheet.Range[exSheet.Cells[2, 1], exSheet.Cells[rowNum + 1, colNum]].NumberFormatLocal = "@ ";

                exBook.Saved = true;

                exBook.SaveAs(@"D:\StanleyBarCode\Upload\FileDownload\" + path);
                exBook.Close();
                if (exApp != null)
                {
                    exApp.Workbooks.Close();
                    exApp.Quit();
                }
                re = true;
            }
            return re;
        }

exBook.SaveAs();可以不写参数,默认生成到文档中。

这里其实就已经写好Excel了,但是需要返回一个路径给前段,做一个下载效果。

前段代码如下

$.post("@Url.Action("Export")", { beginDate: $("#beginDate").val(), endDate: $("#endDate").val(), SAPPO: $("#SAPPO").val(), ProductCode: $("#ProductCode").val(), PackNo: $("#PackNo").val(), LotNo: $("#LotNo").val(), MaterialCode: $("#MaterialCode").val(), MaterialPackNo: $("#MaterialPackNo").val(), MaterialLotNo: $("#MaterialLotNo").val(), PickStatus: $("#PickStatus").val() }, function (data) {
                         window.location = data.value;
                     }, "json");

直接访问写好的路径就ok,效果图如下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屑莹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值