排名
1
文章
860
粉丝
112
评论
163
.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目
尘叶心繁 : 可以可以讲真的我都想弄个模板
net core webapi post传递参数
庸人 :
确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 : 已精
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 :
疯狂反射
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

NPOI是一个优秀的操作excel的库,可以很方便的进行excel的读取与导出
NPOI读取excel
- public ActionResult ReadExcel()
- {
- //打开excel所在的位置
- FileStream stream = new FileStream(Server.MapPath("~/excel/students.xls"), FileMode.Open);
- //获取excel
- HSSFWorkbook workbook = new HSSFWorkbook(stream);
- //获取excel中的表
- HSSFSheet sheet = workbook.GetSheet("Sheet1") as HSSFSheet;
-
- //获取行
- HSSFRow row = sheet.GetRow(0) as HSSFRow;
- //获取列
- HSSFCell cell = row.GetCell(0) as HSSFCell;
- string str = cell.StringCellValue;
-
- //遍历行
- for (int i = 0; i < sheet.LastRowNum; i++)
- {
- HSSFRow itemrow = sheet.GetRow(i) as HSSFRow;
- string value = itemrow.GetCell(0).StringCellValue;
- Response.Write(value + "<br/>");
- }
-
- return View();
- }
封装一个方法根据字符串的方式来读取单元格的值
因为类型多了,读取很容易报错
- /// <summary>
- /// 根据string类型来获取单元格的值
- /// </summary>
- /// <param name="hSSFCell"></param>
- /// <returns></returns>
- private string GetStringCellValue(NPOI.SS.UserModel.ICell hSSFCell)
- {
- if (hSSFCell == null)
- {
- return "";
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Numeric)
- {
- // //NPOI中数字和日期都是NUMERIC类型的,这里对其进行判断是否是日期类型
- if (NPOI.SS.UserModel.DateUtil.IsCellDateFormatted(hSSFCell))
- {
-
- try
- {
- string dateTime = hSSFCell.DateCellValue.ToString();
- return dateTime;
- }
- catch
- {
- /*
- * 很奇怪读取时不时会报错。
- * 如果报错就使用数字类型读取然后使用GetJavaDate把数字转化成日期
- */
- DateTime dateTime = NPOI.SS.UserModel.DateUtil.GetJavaDate(hSSFCell.NumericCellValue);
- }
- }
- return hSSFCell.NumericCellValue.ToString();
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.String)
- {
- return hSSFCell.StringCellValue;
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Boolean)
- {
- return hSSFCell.BooleanCellValue.ToString();
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Blank)
- {
- return "";
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Error)
- {
- return hSSFCell.ErrorCellValue.ToString();
- }
- return "";
- }
也可以按照泛型的类型来封装
注意通过这种方式,类型要能转化成功才行,不然会报类型转化的错误的
- /// <summary>
- /// 根据传递过来的泛型来获取对应的类型数据
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="hSSFCell"></param>
- /// <returns></returns>
- private T GetCellValue<T>(NPOI.SS.UserModel.ICell hSSFCell)
- {
- Type t = typeof(T);
-
- if (hSSFCell == null)
- {
- return default(T);
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Numeric)
- {
- // //NPOI中数字和日期都是NUMERIC类型的,这里对其进行判断是否是日期类型
- if (NPOI.SS.UserModel.DateUtil.IsCellDateFormatted(hSSFCell))
- {
- return (T)(object)hSSFCell.DateCellValue;
- }
- return (T)(object)hSSFCell.NumericCellValue;
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.String)
- {
- return (T)(object)hSSFCell.StringCellValue;
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Boolean)
- {
- return (T)(object)hSSFCell.BooleanCellValue;
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Blank)
- {
- return default(T);
- }
- if (hSSFCell.CellType == NPOI.SS.UserModel.CellType.Error)
- {
- return (T)(object)hSSFCell.ErrorCellValue;
- }
- return default(T);
- }
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价