首页 > 编程语言 >C#生成Excel文件

C#生成Excel文件

时间:2024-01-14 10:05:53浏览次数:38  
标签:modelwork sheet C# Excel 生成 modelPath 版本 根目录 模板

在实际运用当中,我是将数据插入到EXCEL模板中,然后生成出带有数据的文档,并将生成的文档传入到FTP当中去的,这篇文章用来记录 怎么将数据插入到EXCEL模板中。

我的项目是winform程序,我将模板存放在exe程序的根目录下。在写这个方法的时候,我传入了三个参数

1、数据源 DataModel ;我的数据较多,写了一个类存放数据

2、模板路径 modelPath;首先获取该程序的根目录然后再加上模板的路径,我的在根目录又建了一个存放模板的文件夹名为“ExcelFile”,模板名字为 测试报告.xlsx

 代码示例:string modelpath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase +"ExcelFile\\" + "测试报告.xlsx";

3、Sheetname;也就是文档内的工作表名称

部分代码如下:

public int DataTableToModelExcelXZYHeadData(DataModel model, string modelPath, string sheetName){
//方法体
}

 这样就有了数据和模板路径和sheet名,接下来看准备代码:

int count = 1;
IWorkbook modelwork = null;
ISheet sheet = null;

FileStream fsmodel = new FileStream(modelPath, FileMode.OpenOrCreate, FileAccess.ReadWrite);

if (modelPath.IndexOf(".xlsx", System.StringComparison.Ordinal) > 0) // 2007版本
modelwork = new XSSFWorkbook(fsmodel);
else if (modelPath.IndexOf(".xls", System.StringComparison.Ordinal) > 0) // 2003版本
modelwork = new HSSFWorkbook(fsmodel);

根据后缀判断excel版本,不同版本解析方式是不一样的,确定完版本以后就开始获取sheet中的内容并赋值了,代码:

try
             {
                if (modelwork != null)
                {
                    sheet = modelwork.GetSheet(sheetName);
                }
                else
                {
                    return -1;
                }
                IRow row4 = sheet.GetRow(4);
                ICell cell4_3 = row4.GetCell(3);
                cell4_3.SetCellValue(record.HeadNumber);
                IRow row5 = sheet.GetRow(5);
                ICell cell5_6 = row5.GetCell(6);
                cell5_6.SetCellValue(record.State == 1 ? "合格" : "不合格");
                IRow row7 = sheet.GetRow(7);
                ICell cell7_3 = row7.GetCell(3);
                cell7_3.SetCellValue(record.PressToolNo);
 
                modelwork.Write(fs); //写入到excel
                return count;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
                return -1;
            }

像这样对每一行进行赋值,最后写入到excel,我忘记保存路径怎么写了。后续我会在补充。

 

标签:modelwork,sheet,C#,Excel,生成,modelPath,版本,根目录,模板
From: https://blog.51cto.com/u_16371710/9238057

相关文章

  • c#中DataTable转List的2种方法示例
    1. 直接写一个datatable转list的类publicList<Dictionary<string,object>>DatatoTable(DataTabledt){List<Dictionary<string,object>>list=newList<Dictionary<string,object>>();foreach(DataRowdrindt.Rows)//每一行......
  • C#中的数据库访问类DBHelper
    1、在配置文件中添加连接字符串首先在配置文件中的<configuration>中加入数据库连接字符串,配置文件后缀为.config,例如:App.config<connectionStrings><addname="你给此条链接起的名字,随便起,访问的时候可以用。比如:AAA"connectionString="DataSource=你的服务器地址;Init......
  • C#调用webapi发送带json参数的post请求
    嗯。。很久不更新,因为跳槽新公司了,要学的东西太多太忙了。也没时间记录,今天又写了一个C#调用webapi发送带json参数的post请求拿数据的方法,所以来到这里记录一下///<paramname="url">请求地址</param>///<paramname="jsonParas">请求体</param>///<paramnam......
  • C#将从数据库查处的table格式的数据转为json
    这里的代码是封装好的类,将Datatable作为参数传进来即可解析出json格式的数据,看代码publicstaticstringToJson(DataTabledt){intcount=dt.Rows.Count;//将DataTable格式的数据转换成json格式StringBuilderjsonBuilder=ne......
  • C#实现串口通讯的方法
    帖子只用于记录本人的学习记录,算是给未来的自己出一份傻瓜式教学。 在C#语言上,一般上位机是由Winform开发,也有WPF,但是我不会WPF上位机无非就是发送数据与接收数据,可以使用C#的SerialPort方法winform自带SerialPort控件,可以将此控件直接拖到页面上,然后实例化该控件,也可以直接实例化......
  • C#中substring ()的用法
    String.SubString(int index,int length)  index:开始位置,从0开始   length:你要取的子字符串的长度  示例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacestr_sub{classProgram{staticvoidMain(string[]args){strin......
  • C#常用工具安装方法及资源整理
    1、GitGit下载地址Git安装教程2、SQLServer2019下载地址安装教程3、VisualStudio2022下载地址安装教程4、TortoiseGit(x64)  2.13.0.1中文版下载地址安装教程5、sqlserver2014下载及安装教程......
  • 使用RanDom生成不重复的随机数
    首先看一下关键词的傻瓜讲解Random用法Random.Next()返回非负随机数;Random.Next(a)返回一个小于a的非负随机数Random.Next(a,b)返回一个大于a小于b的非负随机数contains用法list.Contains(a)判断列表list里是否含有a,有则返回true接下来看代码staticvoidMain(string[]args)......
  • Helm概述,安装,部署,chart模板使用
    Helm概述Helm是一个用于管理Kubernetes应用程序的工具,它提供了一个简单而有效的方式来定义、安装和部署应用程序。Helm通过使用可重复使用的模板(称为Charts)来描述应用程序的Kubernetes资源,并提供了一个命令行界面来管理这些Charts。Helm的核心概念包括:Chart:Chart是Helm的基本单元,它......
  • React-hook-form-mui(一):基本使用
    前言在项目开发中,我们选择了React+MUI作为技术栈。在使用MUI构建form表单时,我们发现并没有与antd类似的表单验证功能,于是我们选择了MUI推荐使用的react-hook-form-mui库去进行验证。但是发现网上关于这个库的使用方法和demo比较少且比较简单,并没有复杂的表单验证的demo。因此本文及......