C# 使用NPOI操作EXCEL

这篇具有很好参考价值的文章主要介绍了C# 使用NPOI操作EXCEL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.添加NOPI

        引用->管理NuGet程序包->添加NOPI

2.相关程序集

C# 使用NPOI操作EXCEL,C#特性,c#,开发语言

3.添加命名空间

using NPOI.HSSF;
using NPOI.XSSF;
using System.IO;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;

4.从Excel导入的dgv样例

//NPOI读入dgv
private void button1_Click(object sender, EventArgs e)
{
    DataTable dtNpoi = new DataTable();
    string fileName = @"D:\desktop\tmp\test.xlsx";
    string sheetName = "sheet1";
    bool isColumnName = true;
    IWorkbook workBook;

    string fileExt = Path.GetExtension(fileName).ToLower(); //获取文件拓展名
    using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
    {
        if(fileExt == ".xlsx")  //新版
        {
            workBook = new XSSFWorkbook(fs);
        }
        else if(fileExt == ".xls")  //旧版
        {
            workBook = new HSSFWorkbook(fs);
        }
        else
        {
            workBook=null;
        }

        //实例化sheet(指定名称没加载出来就通过索引加载sheet)
        ISheet sheet = null;
        if(sheetName != null &&  sheetName.Length > 0) 
        {
            sheet = workBook.GetSheet(sheetName);   //获取指定名称的工作表
            if(sheet == null )
            {
                sheet = workBook.GetSheetAt(0); //工作簿没有内容,通过索引0返回空worksheet对象,不会null报错
            }
        }
        else
        {
            sheet = workBook.GetSheetAt(0); //获取第一个工作表
        }


        //获取表头FirstRowNum第一行索引就是0
        IRow header = sheet.GetRow(sheet.FirstRowNum);  //获取第一行
        int startRow = 0;  //数据的第一行索引
        if(isColumnName)    //表示第一行是列名信息
        {
            startRow = sheet.FirstRowNum + 1;   //第一行应该是从1开始的
            //遍历第一行的单元格 列名 0
            for (int i = header.FirstCellNum; i < header.LastCellNum; i++)
            {
                //获取指定索引单元格
                ICell cell = header.GetCell(i);
                if(cell != null)
                {
                    //获取列名的值
                    string cellValue = cell.ToString();
                    if(cellValue != null)
                    {
                        DataColumn col = new DataColumn(cellValue); //记住可以这样子添加
                        dtNpoi.Columns.Add(col);
                    }
                    else
                    {
                        DataColumn col = new DataColumn();
                        dtNpoi.Columns.Add(col);
                    }
                }
            }
        }

        //数据    LastRowNum最后一行的索引 如第九行索引是8
        for (int i = startRow; i <= sheet.LastRowNum; i++)
        {
            IRow row = sheet.GetRow(i); //获取第i行
            if(row == null )
            {
                continue;
            }

            DataRow dr = dtNpoi.NewRow();

            //遍历每行的单元格
            for (int j = row.FirstCellNum; j < row.LastCellNum; j++)
            {
                if(row.GetCell(j) != null)
                    dr[j] = row.GetCell(j).ToString();
            }
            dtNpoi.Rows.Add(dr);
        }

    }
    this.dataGridView1.DataSource = dtNpoi;
    
}

5.从dgv导入到Excel文章来源地址https://www.toymoban.com/news/detail-681585.html

DataTable dtTable = this.dataGridView1.DataSource as DataTable; //表1转换为DataTable
string sheetName = "sheet1";
//创建工作簿
IWorkbook wb = new HSSFWorkbook();
//这个创建sheet很巧妙
ISheet sheet = string.IsNullOrEmpty(sheetName) ? wb.CreateSheet("sheet1") : wb.CreateSheet(sheetName);
int rowIndex = 0;
if(dtTable.Columns.Count > 0)
{
    IRow header = sheet.CreateRow(rowIndex);    //创建第一行
    for (int i = 0; i < dtTable.Columns.Count; i++)
    {
        ICell cell = header.CreateCell(i);  //给第一行赋值
        cell.SetCellValue(dtTable.Columns[i].ColumnName);
    }
}

//添加数据
if(dtTable.Rows.Count > 0)
{
    for (int i = 0; i < dtTable.Rows.Count; i++)
    {
        rowIndex++;
        IRow row = sheet.CreateRow(rowIndex);
        for (int j = 0; j < dtTable.Columns.Count; j++)
        {
            ICell cell = row.CreateCell(j);
            cell.SetCellValue(dtTable.Rows[i][j].ToString());
        }
    }
}


//列的大小为自动
for (int i = 0; i < dtTable.Columns.Count; i++)
{
    //sheet.AutoSizeColumn(i);
}

string fileName = @"D:\desktop\tmp\NPOI导出.xls";
using(FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
    wb.Write(fs);   //这个workbook竟然可以直接写
}

MessageBox.Show("导出成功!");

到了这里,关于C# 使用NPOI操作EXCEL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【办公软件】C#调用NPOI实现Excel文件的加载、导出功能

    本文将介绍如何使用C#和NPOI库实现Excel文件的读写操作,并通过加载文件和导出文件的按钮进行封装。NPOI是一个强大的.NET库,可以轻松处理Excel文件。我们将学习如何使用NPOI打开现有的Excel文件、读取数据,并将数据写入到Excel文件中。 在开始之前,请确保已安装以下环境:

    2024年02月06日
    浏览(35)
  • 深入解析C#中的第三方库NPOI:Excel和Word文件处理的利器

    一、引言 在.NET开发中,操作Office文档(特别是Excel和Word)是一项常见的需求。然而,在服务器端或无Microsoft Office环境的场景下,直接使用Office Interop可能会面临挑战。为了解决这个问题,开源库NPOI应运而生,它提供了无需安装Office即可创建、读取和修改Excel (.xls, .xlsx) 和

    2024年03月18日
    浏览(28)
  • 使用NPOI修改Excel数据

    需求:格式为exp的文件,具有json结构,替换掉其中某些数据 解决方法:读取excel,用npoi读取指定内容,在exp中找到特定结构,然后替换 读取其他格式的文件也是用此方法

    2024年02月08日
    浏览(26)
  • 使用NPOI做Excel简单报表

    前言 前面介绍了NPOI单元格样式的使用、单元格合并,以及NPOI提供的颜色。现在用上前面的一些知识点,做一个测试结果表格。 1、 介绍NPOI 的颜色卡、名称以及索引 https://editor.csdn.net/md/?articleId=130265415 2、 NPOI的CellStyle单元格样式 https://editor.csdn.net/md/?articleId=130245869 3、 将

    2023年04月22日
    浏览(31)
  • .NET Core6.0使用NPOI导入导出Excel

    一、使用NPOI导出Excel //引入NPOI包 HTML JS C# 二、使用NPOI导入Excel HTML JS C# 控制器代码 添加ExcelHelper类 添加Extensions类 添加实体类UserEntity,要跟Excel的列名一致 Excel模板 实现效果

    2024年02月12日
    浏览(28)
  • 在Unity中使用EPPlus库NPOI库写入Excel数据

    Unity版本: 2021.3.25f1 1.EPPlus库: a.引用EPPlus库:首先,需要在Unity项目中引用EPPlus库。可以通过从官方网站(https://epplussoftware.com/)下载EPPlus库的最新版本,并将其添加到Unity项目中。 b.创建Excel数据:在Unity中,使用C#脚本来创建Excel数据。在示例代码中,创建了一个名为MemorySt

    2024年01月19日
    浏览(44)
  • 【工具插件类教学】NPOI插件使用Excel表格的导入和导出(包含图片)

    目录 一.导入Excel 解析读取 1.选择导入的目标文件 2.解析读取导入的文件

    2024年01月16日
    浏览(39)
  • Unity 使用NPOI,模板替换Excel中的关键字(针对.xlsx)

    Unity 使用NPOI,模板替换Excel中的(针对.xlsx) 需求:项目中要用到生成Excel来打印文件,只需要替换其中的值,保留原模板,生成新的Excel 第一步:在unity中导入一下的dll 新建一个Plugin的文件夹,把dll全部放进去 以上选中的这些文件在unity的安装目录下 UnityEditorData

    2023年04月24日
    浏览(32)
  • c# 使用Microsoft.Office.Interop.Excel 对Excel操作

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 Microsoft.Office.Interop.Excel的读取,保存,内容写入和打印。 提示:以下是本篇文章正文内容,下面案例可供参考     首先于Proj

    2024年02月03日
    浏览(32)
  • Unity使用NPOI库操作Word文件

    1、导入NPOI库的DLL 链接:https://pan.baidu.com/s/1O29nSZdBsNM8hP_f6-bH1A?pwd=6666 提取码:6666 –来自百度网盘超级会员V4的分享 2、将类库文件导入到Plugins文件夹目录下,类库文件要放在Plugins文件夹里面才能在C#引用 3、设置.NET版本,如果不是4.x可能会出现不兼容的问题,这个不一定,看

    2024年03月27日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包