C#—导入、导出(excel的赋值、取值)

本文介绍使用NPOI库在C#中读写Excel文件的方法。包括如何创建NPOI助手类,设置和获取Excel单元格的值,并区分处理2003版和2007版Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入、导出主要就是对excel进行取值、赋值

 public class NPOIHelper
    {
        public HSSFWorkbook Workbook2003;
        public IWorkbook Workbook2007;
        public ISheet iSheet;
        public string ExcelVersion;

        /// <summary>
        /// NPOIHelper
        /// </summary>
        /// <param name="filePath">Excel文件路径</param>
        /// <param name="sheetName">Sheet Name</param>
        public NPOIHelper(string filePath, string sheetName)
        {
            try
            {
                string extension = Path.GetExtension(filePath);
                if (extension.ToLower() == ".xls")
                {
                    ExcelVersion = "2003";
                    using (FileStream fs = new FileStream(@filePath, FileMode.Open, FileAccess.ReadWrite))
                    {
                        Workbook2003 = new HSSFWorkbook(fs);
                        iSheet = Workbook2003.GetSheet(sheetName);
                    }
                }
                else
                {
                    ExcelVersion = "2007";
                    using (FileStream fs = new FileStream(@filePath, FileMode.Open, FileAccess.ReadWrite))
                    {
                        Workbook2007 = WorkbookFactory.Create(fs);
                        iSheet = Workbook2007.GetSheet(sheetName);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 赋值
        /// </summary>
        /// <param name="rowIndex">行数 从0开始</param>
        /// <param name="cellIndex">列数 从0开始</param>
        /// <param name="val"></param>
        public void SetValue(int rowIndex, int cellIndex, string val)
        {
            IRow dataRow = iSheet.GetRow(rowIndex);
            if (dataRow == null)
                dataRow = iSheet.CreateRow(rowIndex);

            ICell newCell = dataRow.GetCell(cellIndex);
            if (newCell == null)
                newCell = dataRow.CreateCell(cellIndex);

            iSheet.GetRow(rowIndex).GetCell(cellIndex).SetCellValue(val);
        }

        /// <summary>
        /// 取值
        /// </summary>
        /// <param name="rowIndex">行数 从0开始</param>
        /// <param name="cellIndex">列数 从0开始</param>
        /// <returns></returns>
        public string GetValue(int rowIndex, int cellIndex)
        {
            string _tempData=null;
            {

            }
            IRow dataRow = iSheet.GetRow(rowIndex);
            if (dataRow == null)
                return string.Empty;

            ICell dataCell = dataRow.GetCell(cellIndex);
            switch(dataCell.CellType)
            {
                case CellType.Numeric:
                   _tempData= dataCell.NumericCellValue.ToString();
                    break;
                case CellType.String:
                    _tempData =dataCell.StringCellValue;
                    break;
                case CellType.Blank:
                    _tempData="";
                    break;
                case CellType.Unknown:
                    _tempData="未知数据";
                    break;
            }

            return _tempData;
        }
    }
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值