首页 > 编程语言 >C# 根据模板导出Excel

C# 根据模板导出Excel

时间:2024-03-22 15:25:54浏览次数:34  
标签:wb C# Excel item CreateCell new SetCellValue 模板 row

/// <summary>
/// 导出Excel(使用模板)
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult ExportExcelByTemplate()
{
    try
    {
        IWorkbook wb = null;
        var template = Directory.GetCurrentDirectory() + @"\wwwroot\Template\template.xlsx";
        // 按模板内容创建 IWorkbook
        using(FileStream fs = new FileStream(template, FileMode.OpenOrCreate))
        {
            wb = new XSSFWorkbook(fs);
        }

        var list = db.Stu.Where(s => s.IsOk).ToList();

        ISheet sheet = wb.GetSheetAt(0);
        int i = 1;
        IRow row = null;
        foreach (var item in list)
        {
            row = sheet.CreateRow(i);
            row.CreateCell(0).SetCellValue(item.StuName);
            row.CreateCell(1).SetCellValue(item.Sex == 0 ? "男" : "女");
            row.CreateCell(2).SetCellValue(double.Parse(item.Phone));
            row.CreateCell(3).SetCellValue(item.CId);

            // 日期格式的导出
            ICell cell = row.CreateCell(4);
            ICellStyle style = wb.CreateCellStyle();
            IDataFormat format = wb.CreateDataFormat();
            style.DataFormat = format.GetFormat("yyyy-MM-dd");
            cell.CellStyle = style;
            cell.SetCellValue(DateTime.Parse(item.InDate.ToString("yyyy-MM-dd")));

            row.CreateCell(5).SetCellValue((double)item.JF);
            row.CreateCell(6).SetCellValue(item.Pic);
            row.CreateCell(7).SetCellValue(item.State);
            i++;
        }

        byte[] buffer = null;
        using (MemoryStream ms = new MemoryStream())
        {
            wb.Write(ms);
            buffer = ms.ToArray();
        }
         // .xlsx文件对应的Mime信息
         var mime = new FileExtensionContentTypeProvider().Mappings[".xlsx"];
        return File(buffer, mime, "学生信息.xlsx");

    }
    catch (Exception)
    {
        throw;
    }
}

网址

标签:wb,C#,Excel,item,CreateCell,new,SetCellValue,模板,row
From: https://www.cnblogs.com/lixia0604/p/18089544

相关文章

  • CentOS学习笔记-设置yum保存软件包并指明保存位置
    CentOS学习笔记-设置yum保存软件包并指明保存位置CentOSLinuxyum在联网的环境中使用yum下载软件或者更新软件之后,希望把软件包保存下来,以便以后在离线机器上进行配置修改配置文件vi/etc/yum.confenterdescriptionhere这里要修改两地方,一是cachedir,表示要存放的位置,自己创......
  • RecursiveCharacterTextSplitter和CharacterTextSplitter代码随读
    直接说结论:优先使用RecursiveCharacterTextSplitter,输入一个separatorlist。优先划分大的符号放到前面,比如句号,分号,划分小块的放到后面。 如果想让separator不生效,就放一个原文中不会出现的一个符号,如果separator为空的话,会有一个默认值self._separators=separatorsor["......
  • 在 Google Colab 中使用 JuiceFS
    GoogleColaboratory(Colab)是一个由Google提供的云端Jupyter编程笔记本,直接通过浏览器即可进行Python编程。Colab充分利用谷歌的闲置云计算资源,为公众提供免费的的在线编程服务,以及免费的GPU资源,虽然在使用方面有一定的规则限制,但对于一般的研究和学习来说绰绰有余。访......
  • C#的播放资源文件里的音频例子 - 开源研究系列文章
          今天无聊,想起原来开发的待办列表TodoList里还缺个提醒声音,于是就添加了提供声音模块代码。然后想着记录一下,让更多的读者能够复用这个模块代码,于是就有了此博文。这个例子只是用于播放资源文件里的wav音频文件,如果要播放本地文件,那请读者自己添加代码,直接调用操作类......
  • 复试C++19真题_看程序写结果_前置++运算符重载 易错
    考察前置++运算符设置为友元函数,这题的坑在于,返回值是不是对象的引用,形参也不是对象的引用,导致自增离开了作用域以后就不在有任何效果。#include<iostream>usingnamespacestd;classC{private:intxx,yy;public:C(intx,inty):xx(x),yy(y){}friendC......
  • [Container] Docker Objects
    DockerobjectsDockerfileAdockerfileisaeditabletextfilethatcontainsinstructionsneededtocreateanimageinterminal.Theinstructionsdockerprovided:FROM:DefinesbaseimageRUN:ExecutesarbitrarycommandsCMD:Definesdefaultcommandfo......
  • QT 智能指针 QPointer QScopedPointer QSharedPointer QWeakPointer QSharedDataPoint
    QPointerQPointer是一种受保护的指针,当其引用的对象被销毁时,它会被自动清除(但是,销毁引用对象还是必须手动delete)。QPointer所指向的对象必须是QObject或其派生类对象。当多个指针指向同一个Object对象时,引用的对象可能被释放掉,这时使用QPointer就可以安全的测试引用对象是......
  • ELK - Win10上使用Docker搭建ES集群
    Win10上使用Docker搭建ES集群ElasticSearch离线镜像包http://www.elastic-view.cn/index.htmlES可视化管理工具http://www.elastic-view.cn/index.html单机单节点启动命令:dockerrun-d--nameelasticsearch-p9200:9200-p9300:9300-enode.name=elasticsearch......
  • 运行onlyOffice官方java-spring demo的必要参数和文件
    运行onlyOffice官方java-spring时报错从网络上没有找到相应的文章故做下笔记properties的参数修改server.version=1.8.0//配置自己的ip(如配置只能使用ip访问localhost失效)server.address=192.168.56.1server.port=4000filesize-max=5242880filename-max=50//文件存......
  • 【包远程安装运行】SpringBoot+Mysql实现的共享厨房平台+演示视频+开发文档(论文模板)
    今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的共享厨房平台系统,该系统可以实现线上提前预约,线下使用。利用支付宝沙箱来作为支付方式,使该系统更切合实际的表现出实体店线下共享厨房的流程。该系统分为前台和后台。主要实现了除脚手架功能以外下......