excel 导出 OpenXml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public ActionResult Export(string queryJson)
{
    try
    {
        var list = Biz.GetDetailView(queryJson);
        if (list == null)
            return Json(new { IsSuccess = false, Message = "无数据!" }, "text/html");
 
        var basePath = Server.MapPath("~/");
        var file = string.Format("{0:yyMMddHHmmssfff}.xlsx", DateTime.Now);
 
        System.IO.File.Copy(Path.Combine(basePath, "Templates", "详细明细.xlsx"), Path.Combine(basePath, "Export", file));
 
        using (SpreadsheetDocument document = SpreadsheetDocument.Open(Path.Combine(basePath, "Export", file), true))
        {
            IEnumerable<Sheet> sheets = document.WorkbookPart.Workbook.Descendants<Sheet>();
            if (sheets.Count() == 0)
                TempData["Message"] = "文件中未包含指定数据!";
            else
            {
                WorksheetPart sheet = (WorksheetPart)document.WorkbookPart.GetPartById(sheets.First().Id);
                WorksheetWriter writer = new WorksheetWriter(document, sheet);
                SpreadsheetStyle style = SpreadsheetStyle.GetDefault(document);
 
                int rowIndex = 2;
                for (int i = 0; i < list.Rows.Count; i++)
                {
                    writer.PasteText(string.Format("A{0}", rowIndex), list.Rows[i]["IMEI"].ToString(), style);
                    writer.PasteText(string.Format("B{0}", rowIndex), list.Rows[i]["GOODSNAME"].ToString(), style);
                    writer.PasteText(string.Format("C{0}", rowIndex), list.Rows[i]["UNITNAME"].ToString(), style);
                    rowIndex++;
                }
                writer.Save();
            }
        }
        return Json(new { IsSuccess = true, Message = "导出成功!", File = file }, "text/html");
    }
    catch (Exception ex)
    {
        return Json(new { IsSuccess = false, Message = ex.Message }, "text/html");
    }
}

  

posted @   yufeiyunsui  阅读(151)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示