首页 新闻 会员 周边 捐助

NPOI如何读取不规则的excel

0
[已解决问题] 解决于 2015-10-28 15:52

下面是我写的两个方法,希望指证,但是我还是没有想到处理不规则的excel的办法。

 /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="list">参数(设置获取内容的规则)</param>
        /// <param name="filepath">路径</param>
        /// <param name="SheetName">Sheet名称</param>
        /// <param name="rowIndex">开始的行数</param>
        /// <param name="columnIndex">开始的列</param>
        public void GetInfo(System.Collections.ArrayList arrlist = null, string filepath = null, string SheetName = null, int rowIndex = 0, int columnIndex = 0)
        {
            if (arrlist.Count > 0)
            {
                if (System.IO.File.Exists(filepath))
                {
                    using (System.IO.FileStream fsRead = System.IO.File.OpenRead(filepath))
                    {
                        NPOI.SS.UserModel.IWorkbook wk = null;
                        try
                        {
                            wk = new NPOI.XSSF.UserModel.XSSFWorkbook(fsRead);
                        }
                        catch
                        {
                            wk = new NPOI.HSSF.UserModel.HSSFWorkbook(fsRead);
                        }
                        if (!string.IsNullOrEmpty(SheetName))
                        {
                            NPOI.SS.UserModel.ISheet sheet = wk.GetSheet(SheetName);
                            GetSheetInfo(sheet, arrlist, rowIndex, columnIndex);
                        }
                        else
                        {
                            for (int i = 0; i < wk.NumberOfSheets; i++)
                            {
                                NPOI.SS.UserModel.ISheet sheet = wk.GetSheetAt(i);
                                GetSheetInfo(sheet, arrlist, rowIndex, columnIndex);
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 获取表格的所有信息
        /// </summary>
        /// <param name="arrlist">自定义读写规则</param>
        /// <param name="sheet"></param>
        /// <param name="rowIndex">开始的行数</param>
        /// <param name="columnIndex">开始的列数</param>
        private void GetSheetInfo(NPOI.SS.UserModel.ISheet sheet, System.Collections.ArrayList arrlist = null, int rowIndex = 0, int columnIndex = 0)
        {
            //从第几行开始
            for (int i = rowIndex; i < sheet.LastRowNum; i++)
            {
                NPOI.SS.UserModel.IRow row = sheet.GetRow(i);
                //第几列开始
                for (int j = columnIndex; j < row.LastCellNum; j++)
                {
                    NPOI.SS.UserModel.ICell cell = row.GetCell(j);
                    /*
                     * list 自定义信息,读取自定义信息
                     * list 自定义参数规则
                     */
                }
            }
        }

其中这里的list是自定义的一些规则,比如读取那个单元格的内容,等等

主要是如果不规则的话,我除了这样定义开始行数和列数,还有什么其他的办法么,如果这样读取的话,有可能excel表头读取不到呀。

_Vegetables的主页 _Vegetables | 小虾三级 | 园豆:586
提问于:2015-10-17 15:26
< >
分享
最佳答案
0

可以去试试读书签

奖励园豆:5
稳稳的河 | 老鸟四级 |园豆:4216 | 2015-10-19 11:13

读取书签的前提是要给Sheet里面添加书签,不添加书签呢?还有,大哥,域那个东西怎么定义的,怎么操作的,我搞不懂呀,能说说?

_Vegetables | 园豆:586 (小虾三级) | 2015-10-19 14:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册