C# NPOI读写Excel

POI读取Excel有两种格式一个是HSSF,另一个是XSSF。 HSSF和XSSF的区别如下: 
HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. 
XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format. 

即:HSSF适用2007以前的版本,XSSF适用2007版本及其以上的。


读取Excel
NPOI使用HSSFWorkbook类来处理xls,XSSFWorkbook类来处理xlsx,它们都继承接口IWorkbook,因此可以通过IWorkbook来统一处理xls和xlsx格式的文件。
以下是简单的例子
private void button1_Click(object sender, EventArgs e)
        {
            IWorkbook wk = null;
            OpenFileDialog temp = new OpenFileDialog();
            string filePath = null;
            if (temp.ShowDialog() == DialogResult.OK)
                filePath = temp.FileName;
            string extension = System.IO.Path.GetExtension(filePath);
            try
            {
                FileStream fs = File.OpenRead(filePath);
                if (extension.Equals(".xls"))
                {
                    //把xls文件中的数据写入wk中
                    wk = new HSSFWorkbook(fs);
                }
                else
                {
                    //把xlsx文件中的数据写入wk中
                    wk = new XSSFWorkbook(fs);
                }
                fs.Close();
                //读取当前表数据
                ISheet sheet = wk.GetSheetAt(0);

                IRow row = sheet.GetRow(0);  //读取当前行数据
                //LastRowNum 是当前表的总行数-1(注意)
                int offset = 0;
                for (int i = 0; i <= sheet.LastRowNum; i++)
                {
                    row = sheet.GetRow(i);  //读取当前行数据
                    if (row != null)
                    {
                        //LastCellNum 是当前行的总列数
                        for (int j = 0; j < row.LastCellNum; j++)
                        {
                            //读取该行的第j列数据,数据为空则为null
                            ICell hssfCell = row.GetCell(j);
                            if (hssfCell == null)
                                continue;
                            richTextBox1.AppendText(hssfCell.ToString() + " ");
                        }
                        richTextBox1.AppendText("\n");
                    }
                }
            }

            catch (Exception ex)
            {
                //只在Debug模式下才输出
                richTextBox1.AppendText(ex.Message + "\n");
            }

        }

写Excel文件:

IWorkbook workbook = new XSSFWorkbook();
            ISheet sheet_dest = workbook.CreateSheet("StatusCode");
            SaveFileDialog sf = new SaveFileDialog();
            sf.Filter = "Excel2007 files (*.xlsx)|*.xlsx";
            sf.FilterIndex = 0;
            sf.RestoreDirectory = true;
            sf.CreatePrompt = true;
            sf.FileName = null;
            if (sf.ShowDialog() == DialogResult.OK)
            {
                IRow row = sheet_source.GetRow(0);  //读取当前行数据
                for(int i=0;i<sheet_source.LastRowNum;i++)
                {
                    row = sheet_source.GetRow(i);  //读取当前行数据
                    IRow row_new = sheet_dest.CreateRow(i);//需要先创建行再创建cell
                    for (int j = 0; j < row.LastCellNum; j++)
                    {
                        string value = String.Empty;
                        if (row.GetCell(j) == null)
                            value = String.Empty;
                        else
                            value = row.GetCell(j).ToString();
                        row_new.CreateCell(j).SetCellValue(value);
                    }
                }
                FileStream sw = new FileStream(sf.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                workbook.Write(sw);
                sw.Close();
            }

C# 中使用 NPOI 库来读取 Excel 文件非常简单。以下是一个基本示例: 首先,您需要安装 NPOI 库。您可以在 NuGet 程序包管理器中搜索 "NPOI" 并安装它。 接下来,您可以使用以下代码来读取 Excel 文件: ```csharp using System; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 如果使用的是 .xlsx 格式Excel 文件 class Program { static void Main(string[] args) { // 读取 Excel 文件 string filePath = "路径/文件名.xlsx"; FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read); // 根据文件格式创建工作簿 IWorkbook workbook = new XSSFWorkbook(file); // 如果使用的是 .xlsx 格式Excel 文件 // 获取第一个工作表 ISheet sheet = workbook.GetSheetAt(0); // 遍历工作表中的行 for (int i = 0; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); if (row != null) { // 遍历行中的单元格 for (int j = 0; j < row.LastCellNum; j++) { ICell cell = row.GetCell(j); if (cell != null) { // 打印单元格的值 Console.WriteLine(cell.ToString()); } } } } // 关闭文件流和工作簿 file.Close(); workbook.Close(); Console.ReadLine(); } } ``` 以上代码打开指定路径下的 Excel 文件,读取第一个工作表中的所有行和单元格,并将每个单元格的值打印到控制台上。 请注意,根据您使用的 Excel 文件格式,您可能需要使用不同的 NPOI 类库(例如 HSSFWorkbook 用于 .xls 格式文件)。在上面的示例中,我使用了 XSSFWorkbook 类来处理 .xlsx 格式文件。 希望这可以帮助您开始使用 NPOI 来读取 Excel 文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值