下面是我写的两个方法,希望指证,但是我还是没有想到处理不规则的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表头读取不到呀。
可以去试试读书签
读取书签的前提是要给Sheet里面添加书签,不添加书签呢?还有,大哥,域那个东西怎么定义的,怎么操作的,我搞不懂呀,能说说?