C# NPOI(xlsx相关操作)
NPOI
- 1. NPOI
- 2. 资源下载和项目应用
- 3. 创建带表头的xlsx并写入数据
- 4. 下载地址
1. NPOI
- NPOI:一个.NET库,用于读取和写入Microsoft Office二进制和OOXML文件格式。在这里我用他读写xlsx文件。
- NPOI采用的是Apache 2.0许可证(poi也是采用这个许可证),这意味着它可以被用于任何商业或非商业项目,你不用担心因为使用它而必须开放你自己的源代码,所以它对于很多从事业务系统开发的公司来说绝对是很不错的选择。
2. 资源下载和项目应用
- 在使用NPOI之前要先下载NPOI的库文件,下载地址在文末:
- 然后在项目中引用
3. 创建带表头的xlsx并写入数据
代码不复杂,但花了我一天的时间。
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.IO;
using System.Windows.Forms;namespace LearnNPOI
{public partial class Form1 : Form{public Form1(){InitializeComponent();}#region 创建带表头的xlsx文件/// <summary>/// 创建带表头的xlsx文件/// </summary>/// <param name="path">文件路径</param>/// <param name="xlsxname">文件名称</param>/// <param name="sheetnames">Sheet名称/param>/// <param name="headername">表头名称</param>/// <param name="sheetName">选择写表头的Sheet</param>/// <param name="workbook">workbook</param>/// <param name="sheet">sheet</param>public void CreateXlsx(string pathname, string[] sheetnames,string[] headername, string sheetName,out IWorkbook workbook, out ISheet[] sheet){string name = pathname;//判断该目录下是否存在同名文件,如果存在则不再重新创建if (File.Exists(name)){FileStream file;file = new FileStream(name, FileMode.Open, FileAccess.Read);workbook = new XSSFWorkbook(file);int sheetnum = workbook.NumberOfSheets;sheet = new ISheet[sheetnum];for (int i = 0; i < sheetnum; i++){sheet[i] = workbook.GetSheet(workbook.GetSheetName(i));}}else{int num = sheetnames.Length;workbook = new XSSFWorkbook();sheet = new ISheet[num];for (int i = 0; i < num; i++){sheet[i] = workbook.CreateSheet(sheetnames[i]);}//创建字体IFont font = workbook.CreateFont();//font.IsItalic = true;//斜体字//font.Underline = (byte)FontUnderlineType.DOUBLE;//下划线font.Color = HSSFColor.BLACK.index;//颜色font.FontHeightInPoints = 13;//字号大小font.FontName = "宋体";//字体ICellStyle style = workbook.CreateCellStyle();style.SetFont(font);//创建新的一行ISheet sheet1 = workbook.GetSheet(sheetName);IRow row1 = sheet1.CreateRow(0);//编辑表头for (int i = 0; i < headername.Length; i++){sheet1.GetRow(0).CreateCell(i).SetCellValue(headername[i]);sheet1.GetRow(0).GetCell(i).CellStyle = style;}FileStream sw = File.Create(name);workbook.Write(sw);sw.Close();}return;}#endregion#region 创建带表头的xlsx文件 缺省值/// <summary>/// 创建带表头的xlsx文件/// </summary>/// <param name="path">文件路径(包括文件名称)</param>/// <param name="headername">表头名称</param>/// <param name="workbook">workbook</param>/// <param name="sheet">sheet</param>public void CreateXlsxDefault(string pathname, string[] headername, out IWorkbook workbook, out ISheet[] sheet){string name = pathname;//判断该目录下是否存在同名文件,如果存在则不再重新创建if (File.Exists(name)){FileStream file;file = new FileStream(name, FileMode.Open, FileAccess.Read);workbook = new XSSFWorkbook(file);int sheetnum = workbook.NumberOfSheets;sheet = new ISheet[sheetnum];for (int i = 0; i < sheetnum; i++){sheet[i] = workbook.GetSheet(workbook.GetSheetName(i));}}else{workbook = new XSSFWorkbook();sheet = new ISheet[3];sheet[0] = workbook.CreateSheet("Sheet1");sheet[1] = workbook.CreateSheet("Sheet2");sheet[2] = workbook.CreateSheet("Sheet3");//创建字体IFont font = workbook.CreateFont();//font.IsItalic = true;//斜体字//font.Underline = (byte)FontUnderlineType.DOUBLE;//下划线font.Color = HSSFColor.BLACK.index;//颜色font.FontHeightInPoints = 13;//字号大小font.FontName = "宋体";//字体ICellStyle style = workbook.CreateCellStyle();style.SetFont(font);//创建新的一行ISheet sheet1 = workbook.GetSheet("Sheet1");IRow row1 = sheet1.CreateRow(0);//编辑表头for (int i = 0; i < headername.Length; i++){sheet1.GetRow(0).CreateCell(i).SetCellValue(headername[i]);sheet1.GetRow(0).GetCell(i).CellStyle = style;}FileStream sw = File.Create(name);workbook.Write(sw);sw.Close();}return;}#endregion#region 写数据进xlsx/// <summary>/// 写数据进xlsx/// </summary>/// <param name="workbook"></param>/// <param name="path"></param>/// <param name="data"></param>public void WriteDataInXlsx(IWorkbook workbook, string path, double[] data){//判断该目录下是否存在同名文件,如果存在则不再重新创建if (File.Exists(path)){FileStream file;file = new FileStream(path, FileMode.Open, FileAccess.Read);workbook = new XSSFWorkbook(file);ISheet sheet = workbook.GetSheet("Sheet1");//创建字体IFont font = workbook.CreateFont();//font.IsItalic = true;//斜体字//font.Underline = (byte)FontUnderlineType.DOUBLE;//下划线font.Color = HSSFColor.BLACK.index;//颜色font.FontHeightInPoints = 12;//字号大小font.FontName = "宋体";//字体ICellStyle style = workbook.CreateCellStyle();style.SetFont(font);int rowNum = sheet.LastRowNum + 1;//创建新的一行IRow row1 = sheet.CreateRow(rowNum);//写入数据for (int i = 0; i < data.Length; i++){sheet.GetRow(rowNum).CreateCell(i).SetCellValue(data[i]);sheet.GetRow(rowNum).GetCell(i).CellStyle = style;}FileStream sw = File.Create(path);workbook.Write(sw);sw.Close();}else{MessageBox.Show("文件不存在,请先创建xlsx文件,然后再存储数据");}return;}#endregionIWorkbook workbook;ISheet[] sheets;private void buttonCreateXlsx2_Click(object sender, EventArgs e){string[] sheetNames = { "平面度", "轮廓度", "平行度", "厚度" };string[] headerNames = { "长度", "宽度", "厚度1", "厚度2", "厚度3", "厚度4" };//CreateXlsx(@"D:\文件2.xlsx", sheetNames, headerNames, "平面度", out workbook, out sheets);CreateXlsxDefault(@"D:\文件2.xlsx", headerNames, out workbook, out sheets);}private void buttonWriteData_Click(object sender, EventArgs e){double[] data = { 1.2, 1.3, 1.4, 1.5, 1.6, 1.7 };WriteDataInXlsx(workbook, @"D:\文件2.xlsx", data);} }
}
4. 下载地址
https://mp.csdn.net/mp_download/manage/download/UpDetailed
C# NPOI(xlsx相关操作)相关推荐
- R语言七天入门教程六:文件相关操作
R语言七天入门教程六:文件相关操作 一.文件的读写 R 语言作为统计学编程语言,常常需要处理大量数据,而这些数据通常会从文件中进行读取,因此文件读写在R语言中是非常重要的操作.在R语言中,用到最多的文 ...
- 用NPOI、C#操作Excel表格生成班级成绩单
在C#中利用NPOI操作Excel表格非常方便,几乎上支持所有的Excel表格本身所有的功能,如字体设置.颜色设置.单元格合并.数值计算.页眉页脚等等. 这里准备使用NPOI生成一个班级成绩单Exce ...
- python的txt、csv、ini、xml、excel文件相关操作
python的txt.csv.ini.xml.excel文件相关操作 函数,一个用于专门实现某个功能的代码块(可重用) 内置函数 len.bin.oct.hex 等 自定义函数 # 定义了一个函数,功 ...
- 2021年大数据HBase(五):HBase的相关操作JavaAPI方式
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-JavaAPI方式 一.需求说明 ...
- 2021年大数据HBase(四):HBase的相关操作-客户端命令式!【建议收藏】
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-客户端命令式 1.进入HBase ...
- 2021年大数据Spark(二十五):SparkSQL的RDD、DF、DS相关操作
目录 RDD.DF.DS相关操作 SparkSQL初体验 SparkSession 应用入口 获取DataFrame/DataSet 使用样例类 指定类型+列名 自定义Schema ...
- 【数据结构】二叉树及其相关操作
二叉树的定义 二叉树是一个由结点构成的有限集合,这个集合或者为空,或者由一个根节点及两棵互不相交的分别称作这个根节点的左子树和右子树的二叉树组成. 二叉树并非一般的树形结构的特殊形式,它们是两种不同的 ...
- Linux之用户组相关操作 groupadd groupdel
Linux之用户组相关操作 groupadd groupdel 1. 创建用户组 命令 说明 groupadd 创建(添加)用户组 创建用户组效果图: [grep是搜索功能,详情博文:https: ...
- Linux之用户相关操作
Linux之用户相关操作 1. 创建用户 [创建后会立即让设置密码] 命令 说明 useradd 创建(添加)用户 useradd命令选项: 选项 说明 -m 自动创建用户主目录,主目录的名字就是用 ...
最新文章
- 【学习笔记】36、lambda是单表达式函数
- LSA(链路状态通告)类型
- 关于tomcat5.5或6.0免安装版,点击startup.bat启动自动消失问题
- 10月2场CMDN Club活动专题、视频、资源分享
- 舍不得花钱买1stOpt,不妨试试这款免费的拟合优化神器【openLU】
- 【电源模块】TPS54331 DCDC降压芯片设计
- C++ STL 思维导图,脑图,树形图。
- 单播、广播和多播IP地址
- NUVOTON的IAP SFR
- EBS 个性化:个性化简介
- java实现清除图片水印_Java 添加、删除PPT文本和图片水印
- 使用GDK7调试Linux内核之KVM
- 有AI就不搬砖?超乎你的想象!道翰天琼认知智能机器人平台API接口大脑为您揭秘。
- 名帖168 李邕 行书《出师表》
- SS-Model【3】:DeepLabv2
- 安装linux系统,卡在Detecting hardware
- HQChart使用教程95-报价列表对接第3方数据3-股票数据
- database changed是什么意思_itunes其他是什么 itunes其他清除方法介绍【图文教程】...
- apk开发软件下载!花费近一年时间整理的Android核心知识清单,含BATJM大厂
- 本计算机家庭组的用户名,win7系统电脑,如何设置共享,共享计算机的用户名和密码怎样设置...