C# —— 使用C# NPOI 读取Excel(.xls)文件

72 篇文章 0 订阅
41 篇文章 0 订阅

using NPOI.HSSF.UserModel;//需要引用【NPOI.dll】最新版本号是:1.2.3.0,下载地址百度一下这个DLL就OK
using NPOI.HSSF.Extractor;//NPOI是一个比较全的库,简单介绍在文章结尾处
using TestCases.HSSF;//需要引用类【HSSFTestDataSamples.cs】,下载地址百度一下这个.CS文件就OK

        //下面是选择.XLS文件所在地的BUTTON
        private void Button_SelcetFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog OFD = new OpenFileDialog();
            OFD.Filter = "xls files (*.xls)|*.xls|All files (*.*)|*.*"; //只选取xls文件
            OFD.RestoreDirectory = true; //还原当前目录
           
            if (OFD.ShowDialog() == DialogResult.OK)


                textBox_xlsPath.Text = OFD.FileName; //将文件路径放入路径显示文本框


        }

 

         /// <summary>
        /// 读取xls指定页、指定行、指定列的数值
        /// </summary>
        /// <param name="fileName">文件路径和文件名</param>
        /// <param name="sheetNum">页</param>
        /// <param name="rowNum">行</param>
        /// <param name="colNum">列</param>
        /// <returns>返回指定文件、页、行、列的数值</returns>

        private string readXls(string fileName, int sheetNum, int rowNum, int colNum)
        {
            try
            {
                HSSFWorkbook workbook = HSSFTestDataSamples.OpenSampleWorkbook(fileName);
                ExcelExtractor extractor = new ExcelExtractor(workbook);
                return extractor.CellValue(sheetNum, rowNum, colNum);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Error!\n请检查此文件是否已被打开或被其他应用程序占用!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return "";
            }
        }

 

        /// <summary>
        /// 检查相应路径的文件是否存在,你的xls行列异常值的检测也可以丢进来
        /// </summary>
        /// <returns>返回是否存在的bool值</returns>

        private bool checkParams()
        {
            if (!System.IO.File.Exists(this.textBox_xlsPath.Text))
            {
                MessageBox.Show("The selected file is not exists, please select again!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            return true;
        }

 

       //读取XLS行列对应值的函数,也可以不用函数,直接把里面的语句放到你程序想读取值的地方即可
        private void Read_XLS_Value()
        {
            string Temp;
            Temp = readXls(textBox_xlsPath.Text, 0, 1, 2); //参数分别是:XLS文件地址,sheet页号,行号,列号
                         //textBox_xlsPath在上面的函数中被赋值为地址了,页、行、列号起始都是从0开始计数,这里要注意
            MessageBox.Show(string.Format("让我们看看取到的值是否正确{0}", copy_reduction));
        }

——————————————————————

好了,这下使用readXls(textBox_xlsPath.Text, Sheet, line, Row); 就可以读取到XSL文件的任何一个值了。

 

解惑:

什么是NPOI?

NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。目前POI的稳定版本中仅支持Excel文件格式xls,其他的都属于不稳定版本(放在poi的scrachpad目录中)。NPOI是构建在POI 3.x版本之上的,本月发布的NPOI 1.2是对应于POI 3.2 final的,所以它支持Excel文件读写,但由于人手和精力原因,还没有实现读写Word, PowerPoint, Visio的文件格式。

 

 NPOI的官方网站是啥?

http://npoi.codeplex.com/


您可以使用C#NPOI库来读取.xls文件。首先,您需要使用`ReadFromExcelFile`方法来读取文件并将数据存储在一个DataTable中。该方法使用`IWorkbook`接口来打开文件,并根据文件的扩展名选择适当的工作簿类型。然后,它遍历每一行和每一列,将单元格的值存储在DataTable中。最后,您可以使用`DataTableToExcel`方法将DataTable中的数据写入到.xls文件中。 以下是一个示例代码,演示了如何使用NPOI库读取.xls文件: ```csharp public void ReadFromExcelFile(string filePath) { IWorkbook wk = null; string extension = System.IO.Path.GetExtension(filePath); try { FileStream fs = File.OpenRead(filePath); if (extension.Equals(".xls")) { wk = new HSSFWorkbook(fs); } else { wk = new XSSFWorkbook(fs); } fs.Close(); ISheet sheet = wk.GetSheetAt(0); IRow row = sheet.GetRow(0); int offset = 0; for (int i = 0; i <= sheet.LastRowNum; i++) { row = sheet.GetRow(i); if (row != null) { for (int j = 0; j < row.LastCellNum; j++) { string value = row.GetCell(j).ToString(); Console.Write(value.ToString() + " "); } Console.WriteLine("\n"); } } } catch (Exception e) { Console.WriteLine(e.Message); } } ``` 您还可以使用`OpenFileDialog`来选择要读取的.xls文件。以下是一个示例代码,演示了如何使用`OpenFileDialog`选择.xls文件: ```csharp private void Button_SelcetFile_Click(object sender, EventArgs e) { OpenFileDialog OFD = new OpenFileDialog(); OFD.Filter = "xls files (*.xls)|*.xls|All files (*.*)|*.*"; OFD.RestoreDirectory = true; if (OFD.ShowDialog() == DialogResult.OK) { string filePath = OFD.FileName; ReadFromExcelFile(filePath); } } ``` 希望这可以帮助到您! #### 引用[.reference_title] - *1* [c#:使用NPOI读取excel表格](https://blog.csdn.net/weixin_44899642/article/details/124687499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C# —— 使用C# NPOI 读取Excel(.xls文件](https://blog.csdn.net/cdefg198/article/details/7844305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C#NPOI操作excel读取和写入excel数据](https://blog.csdn.net/coderK2014/article/details/50185163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值