1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C#使用NPOI将txt文本批量转为excel文件

C#使用NPOI将txt文本批量转为excel文件

时间:2022-06-11 18:34:19

相关推荐

C#使用NPOI将txt文本批量转为excel文件

1.下载NPOI

    NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。可以在没有安装Office的情况下对Word或Excel文档进行读写操作。

    可从NPOI官网下载,也可以直接下载我上传的NPOI.dll文件(其实这里我是不想收取积分的,但是上传时最少要输入1个积分,无奈)。

2 .引用NPOI.dll文件

    在引用中添加NPOI.dll,在命名空间前引用:

using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;

3.代码实现

(1)获取待转换的txt文件集。

     本文以下图所示的文件为例进行讲解:

     txt文本内容形式如下:

     获取txt文件夹下的文件列表:

DirectoryInfo theFolder = new DirectoryInfo(@"C:\Users\Bin\Desktop\txt\");FileInfo[] files = theFolder.GetFiles();

(2)遍历,对每一个txt进行下面的转换

   1)实例化HSSFWorkbook类,调用该类的CreateSheet方法创建一个工作簿。

HSSFWorkbook hssfworkbook = new HSSFWorkbook();Sheet sheet = hssfworkbook.CreateSheet("sheet1");

   2)读取文本文件的所有行,每一行作为excel文件中的一行数据,然后将每一行数据用“@”符号分割,分割后的字符串作为对应单元格的值写入工作簿中。

//读取指定txt文件中的所有行数据,txtFullPath为txt文件的全路径(包括路径和带后缀的名称,如:C:\Users\Bin\Desktop\txt\八里河景区.txt)string[] txtLines = File.ReadAllLines(txtFullPath);for (int i = 0; i < txtLines.Length; ++i){//将txt文本中的一行数据用@分割string[] line = txtLines[i].Split('@');//创建行Row dataRow = sheet.CreateRow(i);for (int j = 0; j < line.Length; j++){//创建列,并写入值Cell cell = dataRow.CreateCell(j);cell.SetCellValue(line[j]);}}

   3)将创建的工作簿写入到指定路径下的excel文件中(如果该文件不存在将会新建,如果存在则会覆盖)。

//打开指定的xls文件,excelFullPath为待转换excel文件的全路径(包括路径和带后缀的名称,如:C:\Users\Bin\Desktop\txt\八里河景区.xls)using (FileStream fs = File.OpenWrite(excelFullPath)){hssfworkbook.Write(fs);}

上面是一个大致的思路以供参考。完整代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System.IO;namespace txts2excels{class Program{static void Main(string[] args){string txtFullPath;string excelFullPath;DirectoryInfo theFolder = new DirectoryInfo(@"C:\Users\Bin\Desktop\文本\");FileInfo[] files = theFolder.GetFiles();for (int i = 0; i < files.Length; i++){//获取txt文本全路径txtFullPath = files[i].FullName;//指定转为excel文件的全路径,这里设置为txt文本所在的文件夹下,名字与对应的txt文件一样excelFullPath = files[i].FullName.Replace("txt", "xls");//开始转换txt2excel(txtFullPath, excelFullPath);Console.WriteLine(files[i].Name + "转换成功!");}Console.WriteLine("全部转换成功!");Console.ReadKey();}/// <summary>/// 将指定路径下的txt文件转换为excel文件(其中txt中每一行表示excel中一行数据,每一行用“@”符号分割成相应的列)/// </summary>/// <param name="txtFullPath">txt文件的全路径</param>/// <param name="excelFullPath">存储转换后excel文件的全路径</param>public static void txt2excel(string txtFullPath, string excelFullPath){HSSFWorkbook hssfworkbook = new HSSFWorkbook();Sheet sheet = hssfworkbook.CreateSheet("sheet1");string[] txtLines = File.ReadAllLines(txtFullPath);for (int i = 0; i < txtLines.Length; ++i){string[] line = txtLines[i].Split('@');Row dataRow = sheet.CreateRow(i);for (int j = 0; j < line.Length; j++){Cell cell = dataRow.CreateCell(j);cell.SetCellValue(line[j]);}}using (FileStream fs = File.OpenWrite(excelFullPath)) //打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!{hssfworkbook.Write(fs); //向打开的这个xls文件中写入mySheet表并保存。}}}}

   运行结果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。