当前位置: 首页 > news >正文

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

文章目录

    • 1. 引言
    • 2. 环境准备
    • 3. 示例代码
    • 4. 结果
    • 5. 总结


1. 引言

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

2. 环境准备

在开始之前,请确保已安装以下环境:

  • Visual Studio(任何版本)
  • NPOI库

3. 示例代码

下面是一个示例代码,演示了如何使用C#和NPOI实现Excel文件的读写操作,并封装在函数中,同时添加加载文件和导出文件的按钮:

using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;class Program
{static void Main(string[] args){Application.Run(new Form1());}
}public class Form1 : Form
{private Button loadButton;private Button exportButton;private DataTable dataTable;public Form1(){loadButton = new Button();loadButton.Text = "加载文件";loadButton.Click += LoadButton_Click;exportButton = new Button();exportButton.Text = "导出文件";exportButton.Click += ExportButton_Click;Controls.Add(loadButton);Controls.Add(exportButton);}private void LoadButton_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "Excel文件 (*.xlsx)|*.xlsx";openFileDialog.Title = "选择要加载的Excel文件";if (openFileDialog.ShowDialog() == DialogResult.OK){string filePath = openFileDialog.FileName;dataTable = LoadExcelFile(filePath);}}private void ExportButton_Click(object sender, EventArgs e){if (dataTable == null){MessageBox.Show("请先加载Excel文件!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Filter = "Excel文件 (*.xlsx)|*.xlsx";saveFileDialog.Title = "选择要导出的Excel文件路径";if (saveFileDialog.ShowDialog() == DialogResult.OK){string filePath = saveFileDialog.FileName;ExportExcelFile(filePath, dataTable);}}private DataTable LoadExcelFile(string filePath){DataTable dataTable = new DataTable();FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read);XSSFWorkbook workbook = new XSSFWorkbook(file);ISheet sheet = workbook.GetSheetAt(0);// 读取表头IRow headerRow = sheet.GetRow(0);for (int i = 0; i < headerRow.LastCellNum; i++){dataTable.Columns.Add(headerRow.GetCell(i).ToString());}// 读取数据for (int row = 1; row <= sheet.LastRowNum; row++){IRow currentRow = sheet.GetRow(row);DataRow dataRow = dataTable.NewRow();for (int col = 0; col < currentRow.LastCellNum; col++){dataRow[col] = currentRow.GetCell(col)?.ToString();}dataTable.Rows.Add(dataRow);}file.Close();Console.WriteLine("加载文件完成!");return dataTable;}private void ExportExcelFile(string filePath, DataTable dataTable){XSSFWorkbook workbook = new XSSFWorkbook();ISheet sheet = workbook.CreateSheet("Sheet1");// 写入表头IRow headerRow = sheet.CreateRow(0);for (int i = 0; i < dataTable.Columns.Count; i++){headerRow.CreateCell(i).SetCellValue(dataTable.Columns[i].ColumnName);}// 写入数据for (int row = 0; row < dataTable.Rows.Count; row++){IRow newRow = sheet.CreateRow(row + 1);for (int col = 0; col < dataTable.Columns.Count; col++){newRow.CreateCell(col).SetCellValue(dataTable.Rows[row][col]?.ToString());}}FileStream writeFile = new FileStream(filePath, FileMode.Create, FileAccess.Write);workbook.Write(writeFile);writeFile.Close();Console.WriteLine("导出文件完成!");}
}

4. 结果

运行代码后,将能够通过加载文件按钮选择要加载的Excel文件,并在控制台中显示文件中的数据。同时,还可以通过导出文件按钮选择要导出的Excel文件路径,并将数据写入到文件中。

5. 总结

本文介绍了如何使用C#和NPOI库实现Excel文件的读写操作,并通过加载文件和导出文件的按钮进行封装。通过使用NPOI的API,我们可以轻松地处理Excel文件,读取其中的数据并进行写入。希望本文对你有所帮助!

http://www.lryc.cn/news/215097.html

相关文章:

  • UVA 11990 “Dynamic‘‘ Inversion 区域树 + 树状数组
  • 邮件钓鱼分析
  • Android 小技巧
  • Centos MySQL --skip-grant-tables详解
  • Linux:进程控制的概念和理解
  • ubuntu20.04编译安装nginx
  • 操作系统的分页
  • 微服务环境搭建
  • ffmpeg 截取命令
  • TypeScript深度剖析:TypeScript 中枚举类型应用场景?
  • [推荐]SpringBoot,邮件发送附件含Excel文件(含源码)。
  • node学习之包管理器
  • 自动驾驶车辆轨迹跟踪
  • React的useEvent 和 ahooks 的 useMemorizedFn 的深度分析和对比
  • 基于goframe2.5.4、vue3、tdesign-vue-next开发的全栈前后端分离的管理系统
  • LInux之在同一Tomcat下使用不同的端口号访问不同的项目
  • 梦百合上榜2023鼎革奖数字化转型先锋榜
  • 沉痛悼念科研分公司
  • Django的网站项目开发好了,该用何种方案在Centos上部署【答:Gunicorn(uWSGI)+Nginx】
  • 基于PyTorch的中文情绪分析器设计与开发
  • HT5010 音频转换器工作原理
  • ubuntu18.04如何更新到22.04
  • 嵌入式软件开发:第二部分–七个步骤计划
  • 什么是IPA,和RPA有啥区别和联系?
  • 内涝积水监测仪怎么样?万宾科技城市内涝积水监测的作用
  • 【java】命令行,包
  • Generative AI 新世界 | 文生图(Text-to-Image)领域论文解读
  • 03.从简单的sql开始
  • JS加密/解密之jsjiami在线js加密的效率问题
  • 解决【spring boot】Process finished with exit code 0的问题