.net上传文件,利用npoi读取文件信息到datatable里
整理代码,.net上传文件,利用npoi读取文件到datatable里,使用了FileUpload控件,代码如下:
- protected void Button1_Click(object sender, EventArgs e)
- {
- try
- {
- #region 上传文件
- if (FileUpload1.HasFile)//判断是否存在上传文件
- FileUpload1.SaveAs(Server.MapPath("~/") + FileUpload1.FileName);
- else
- {
- ScriptManager.RegisterClientScriptBlock(this, GetType(), "aaa", "alert('上传文件不存在或上传文件为空,请检查文件');", true);
- return;
- }
- #endregion
- #region 读取文件
- DataTable dt = null;
- string fileEx = FileUpload1.FileName.Substring(FileUpload1.FileName.LastIndexOf(".") + );
- if (fileEx == "xls")
- {
- dt = IO.ImportExcelFile(Server.MapPath("~/") + FileUpload1.FileName);
- }
- else if (fileEx == "xlsx")
- {
- dt = IO.ImportExcelFilexlsx(Server.MapPath("~/") + FileUpload1.FileName);
- }
- if (dt.Rows.Count < )
- {
- ScriptManager.RegisterClientScriptBlock(this, GetType(), "aaa", "alert('上传文件为空,请检查文件内容');", true);
- return;
- }
- #endregion
- }
- catch (Exception ex)
- {
- ScriptManager.RegisterClientScriptBlock(this, GetType(), "aaa", "alert('系统异常," + ex + "');", true);
- }
- }
npoi读取文件的方法:
- public static DataTable ImportExcelFile(string filePath)
- {
- HSSFWorkbook hssfworkbook;
- #region//初始化信息
- try
- {
- using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
- {
- hssfworkbook = new HSSFWorkbook(file);
- }
- }
- catch (Exception e)
- {
- throw e;
- }
- #endregion
- NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt();
- System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
- DataTable dt = new DataTable();
- for (int j = ; j < (sheet.GetRow().LastCellNum); j++)
- {
- dt.Columns.Add(sheet.GetRow().GetCell(j).ToString());
- }
- while (rows.MoveNext())
- {
- HSSFRow row = (HSSFRow)rows.Current;
- if (row.RowNum != )
- {
- DataRow dr = dt.NewRow();
- for (int i = ; i < row.LastCellNum; i++)
- {
- NPOI.SS.UserModel.ICell cell = row.GetCell(i);
- if (cell == null)
- {
- dr[i] = null;
- }
- else
- {
- dr[i] = cell.ToString();
- }
- }
- dt.Rows.Add(dr);
- }
- }
- return dt;
- }
- public static DataTable ImportExcelFilexlsx(string filePath)
- {
- XSSFWorkbook hssfworkbook;
- #region//初始化信息
- try
- {
- using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
- {
- hssfworkbook = new XSSFWorkbook(file);
- }
- }
- catch (Exception e)
- {
- throw e;
- }
- #endregion
- NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt();
- System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
- DataTable dt = new DataTable();
- for (int j = ; j < (sheet.GetRow().LastCellNum); j++)
- {
- dt.Columns.Add(sheet.GetRow().GetCell(j).ToString());
- }
- while (rows.MoveNext())
- {
- XSSFRow row = (XSSFRow)rows.Current;
- if (row.RowNum != )
- {
- DataRow dr = dt.NewRow();
- for (int i = ; i < row.LastCellNum; i++)
- {
- NPOI.SS.UserModel.ICell cell = row.GetCell(i);
- if (cell == null)
- {
- dr[i] = null;
- }
- else
- {
- dr[i] = cell.ToString();
- }
- }
- dt.Rows.Add(dr);
- }
- }
- return dt;
- }
.net上传文件,利用npoi读取文件信息到datatable里的更多相关文章
- [CISCN2019 华北赛区 Day1 Web1]Dropbox-phar文件能够上传到服务器端实现任意文件读取
0x00知识点 phar是什么: 我们先来了解一下流包装 大多数PHP文件操作允许使用各种URL协议去访问文件路径:如data://,zlib://或php://.例如常见的 include('php ...
- C# 文件操作(上传,下载,读取,写入)
1. 通过byte[]数据下载文件(这种方法可用于以开放Api的形式传递文件内容) public void FileDownLoadByByte(byte[] fileData, string fil ...
- HTML5 文件域+FileReader 读取文件并上传到服务器(三)
一.读取文件为blob并上传到服务器 HTML <div class="container"> <!--读取要上传的文件--> <input type ...
- kindeditor<=4.1.5 文件上传漏洞利用
kindeditor<=4.1.5 文件上传漏洞 - Kindeditor <=4.1.5 file upload vulnerability and use 漏洞存影响版本:小于等于4. ...
- 通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等
记录一次对FTP服务器文件内容 通过Java程序对FTP服务器文件处理:连接,上传,下载,读取,移动文件等. 需求描述:今天接到一个任务,在Java项目中,读取FTP服务器上的一些文件,进行一些业务操 ...
- 前端上传视频、图片、文件等大文件 组件Plupload使用指南
demo:https://blog.csdn.net/qq_30100043/article/details/78491993 Plupload上传插件中文帮助文档网址:http://www.phpi ...
- 表单多文件上传样式美化 && 支持选中文件后删除相关项
开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...
- struts文件上传,获取文件名和文件类型
struts文件上传,获取文件名和文件类型 Action中还有两个属 性:uploadFileName和uploadContentType,这两个属性分别用于封装上传文件的文件名.文件类型.这是S ...
- php文件上传参考配置与大文件上传
PHP用超级全局变量数组$_FILES来记录文件上传相关信息的,在php文件上传之前,可通过调节php.ini中相关配置指令,来控制上传相关细节. 1.file_uploads=on/off ...
随机推荐
- 外购半成品回写PR时将同一供应商同一编码的PR合并数量回写
'); --PR 净需求 '); ---加上PR回写逻辑后 '); ---加上PR回写逻辑后 ') order by item; ---最终回写去SAP的数据 ) as LGORT ,'SAPRFC' ...
- veil-catapult
veil-catapult进行payload投放,直接使payload在内存中执行. kaliIP:192.168.1.119 目标IP:192.168.1.121 1.powershell powe ...
- JMeter学习(七)聚合报告之 90% Line 正确理解(转载)
转载自 http://www.cnblogs.com/yangxia-test 90% Line 参数正确的含义: 虽然,我的上面理解有一定的道理,显然它是错误的.那看看JMeter 官网是怎么说的? ...
- centos 7 下多网卡绑定+ vlan 网卡配置
一.前言 CentOS7之前系统提供给用户的是bonding driver来实现链路聚合,实际上bonding适用于大多数应用.Bonding driver的架构是由内核空间完全控制.管理. Team ...
- WAS 忘记密码
一.重置密码 1.首先关闭was,ps –ef|grep java 查看java进程号,然后kill -9 XXXX杀掉进程即可.或者使用命令./stopServer.sh server1 2.取消控 ...
- 宋体freetype16和12号字无法正常显示
在使用freetype过程中发现,从window下拷贝来的simsun.ttc, simkai.ttf两个字体, 在调用 FT_Set_Pixel_Sizes(face, 12, 0): 将字体大小设 ...
- c++实现中的一些注意 事项
1,尽可能延后对象中的变量定义式的出现,这样可以增加程序的清晰度,尽量少的调用构造,如果有定义变量最好在末尾定义并给予初值,这样就避免了默认构造函数的调用. 2 尽量少做转型操作. const_cas ...
- 802.1X技术介绍
1.802.1X IEEE802 LAN/WAN委员会为解决无线局域网网络安全问题,提出了802.1X协议.后来,802.1X协议作为局域网端口的一个普通接入控制机制在以太网中被广泛应用,主要解决以太 ...
- js中的循环
js中的循环是我们经常要用到的,现在进行一些归纳. 一.javascript种的循环. 1.循环对象 var o = { name: 'Jack', age: 20, city: 'Beijing' ...
- visual studio build and rebuild 的区别
build 只编译发生改变的dll, (如下, 我只修改了web API,build的时候, 只有webAPI.dll发生更新) rebuild = clean + build (如下, 本项目中dl ...