首页 > 其他分享 >使用ClosedXML实现Excel导入导出

使用ClosedXML实现Excel导入导出

时间:2025-01-02 21:31:38浏览次数:1  
标签:return worksheet Excel 导入 ms var new ClosedXML row

使用ClosedXML实现Excel导入导出

写在开头

游览Dotnet 基金会中的项目时,发现了这个库,Github 链接,它的性能非常好,详细见下图

截屏2025-01-02 20.30.29

话不多说,直接上代码吧!

导出

后端:
public static byte[] Output<T>(List<T> data,  string sheetName) 
    {
        using var workbook = new XLWorkbook();
            var worksheet = workbook.Worksheets.Add(sheetName);

            var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

            //表头
            for (int i = 0; i < properties.Length; i++)
            {
                worksheet.Cell(1, i + 1).Value = properties[i].Name;
            }

            //值
            for (int row = 0; row < data.Count; row++)
            {
                for (int col = 0; col < properties.Length; col++)
                {
                    var value = properties[col].GetValue(data[row], null);
                    worksheet.Cell(row + 2, col + 1).Value = value?.ToString()??"" ;
                }
            }

            //保存至内存流
            using var ms = new MemoryStream();
            workbook.SaveAs(ms);
            ms.Position = 0;
            return ms.ToArray();
    }
[HttpGet("output")]
    public async Task<IActionResult> Output()
    {
        var data =
            new{
               字段1=1,
                 字段2=“2”
            };
        return File(ExcelHelper.Output(data,“标题”), "application/octet-stream", "output.xls");
    }
前端:
export function fileDownAction(url, parameter) {
  return request({//axios
    url: url,
    method: 'get',
    params: parameter,
    responseType: 'blob'
  })
}
let timeStamp = Date.parse(new Date()).toString().substring(0, 10)
fileDownAction(url + "/output", params).then((res) => {
          // 处理返回的文件流
          let url = window.URL.createObjectURL(new Blob([res]))
          let link = document.createElement('a')
          link.style.display = 'none'
          link.href = url
          link.setAttribute('download', fileName + timeStamp + ".xls")
          document.body.appendChild(link)
          link.click()
        })

导入

后端:
public static async Task<IXLWorksheet> CreateTableAsync(IFormFile file)
    {
        var ms = new MemoryStream();
        await file.CopyToAsync(ms);
        ms.Position = 0;
         var workbook = new XLWorkbook(ms);
        // 获取第一个工作表
        return workbook.Worksheet(1);
    }
//根据位置获取单元格的值
public static string GetCellValue(IXLWorksheet worksheet,string address)
    {
        return worksheet.Cell(address).Value.ToString();//“B12”
  //return worksheet.Cell(row,column).Value.ToString(); 
    }
//根据值获取单元格地址
public static IXLAddress GetCellAddress(IXLWorksheet worksheet,string cellName)
    {
        return  worksheet.CellsUsed(a=>a.Value.ToString()==cellName).First().Address;
  // 以下返回“B12”此类字符串
  //worksheet.CellsUsed(a=>a.Value.ToString()==cellName).First().ToString();
    }

前端代码我就不贴了,传入一个file对象即可

写在最后

如果觉得该库好用,可以去github点个star哦!

标签:return,worksheet,Excel,导入,ms,var,new,ClosedXML,row
From: https://www.cnblogs.com/ssz0312/p/18648776

相关文章

  • k8s系列--通过docker拉取的镜像导入到 containerd中
    要将通过dockerpull拉取的镜像导入到containerd中,可以按照以下步骤操作:步骤1:使用docker将镜像保存为tar文件dockerpullregistry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.11.1dockersaveregistry.cn-hangzhou.aliyuncs.com/google_containe......
  • python文件操作相关(excel)
    python文件操作相关(excel)1.openpyxl库openpyxl其他用法创建与删除操作单元格追加数据格式化单元格合并单元格插入图片公式打印设置保护工作表其他功能2.pandas库3.xlrd和xlwt库4.xlsxwriter库5.pyxlsb库应用场景参考资料在Python中,操作Excel文件通......
  • MongoDB 创建用户、导出数据库、导入数据库库
    【数据库】MongoDB创建用户、导出数据库、导入数据库库一、两套MongoDB集群超级管理员信息1,第一套MongoDB集群   172.26.1.9:30000 超级管理员用户名:XX 密码:XX2,第二套MongoDB集群 172.26.1.31:27017超级管理员用户名:XX密码:XX 注意:地铁用:172.26.1.31:2......
  • Oracle数据库创建、用户、表空间、导入、导出
    【数据库】Oracle数据库创建、用户、表空间、导入、导出一、创建用户、表空间及赋权限进入cmd输入sqlplus/assysdba  注意:本命令需要在oracle安装主机执行。如果有改数据库的dba权限用户也可以登录后执行下面操作/*分为3步*//*第1步:创建表空间 注意表空间在......
  • 核对Excel表格数据,掌握这3个技巧超级简单
    大家好,我是小鱼。在工作中核对Excel表格数据是经常遇到的事情,如果一个一个手动核对的话,容易出错还会花费大量的时间和精力。表格数据量比较大的话那经常加班也是不可避免的,今天就跟大家分享核对Excel表格数据的3个小技巧,操作也非常的简单,再也不用为核对表格数据加班了!一、核......
  • Excel 后,我们需要怎样的数据分析软件
    在现代商业环境中,数据分析已成为企业决策的重要工具。通过数据分析,企业可以更好地了解市场趋势、客户行为以及内部运营情况,从而制定出更科学的策略,提高竞争力。然而,数据分析并不是一项简单的任务,需要选择合适的工具和方法。很多人认为BI软件是数据分析的首选,因为BusinessI......
  • 【prometheus】【blackbox_exporter】grafna导入blackbox_exporter看板配置
    1、进入到grafana看板,选择合适的看板模版地址:https://grafana.com/grafana/dashboards/在搜索框中输入blackbox_exporter,找到合适的模版,如下图所示:2、点击并下载对应看板JSON数据3、在grafana的页面进行导入操作3.1点击importer按钮在左侧的Dashboards按钮,然后点......
  • 如何处理大型数据库文件导入失败的问题?
    当您尝试将一个非常大的SQL数据库文件导入到MySQL或其他关系型数据库管理系统中时,可能会遇到各种各样的问题,比如超时、内存不足或磁盘空间不够等。针对这种情况,这里提供几种有效的解决方案:分批导入数据:对于特别大的SQL文件,最直接的方法就是将其分割成多个较小的部分分别导入。......
  • 怎样用 Excel 做数据分析?
    与其单纯地学习怎么使用Excel,不如结合AI工具来进行数据分析。接下来就来盘一盘AI在Excel做数据分析方面会带来哪些改进和帮助。 原本不能非常复杂的公式,变成聊天的方式。Excel门槛被大大降低,以前技术大佬才能干的活,现在前台小姐姐、人资小姐姐、财务小姐姐们可以轻松拿捏......
  • Excel表格做数据对比分析如何做出像医院化验单上的上升下降箭头
    大家好,我是小鱼。在日常的工作中会经常做一些年度数据或者每个月的数据对比分析。在使用Excel表格做数据分析时,如何才能把数据上升或者下降的趋势分析更直观的展现出来呢?其实,Excel表格做数据对比分析时使用像医院化验单上的上升下降箭头就比较直观,那么如果实现这样的效果呢?今......