NPOI导入xls,xlsx格式实例
NPOI DLL下载地:http://npoi.codeplex.com/releases
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Topevery.DUM.PublicServer.Manager
{
public partial class ToiletListImport : BasePage
{
private static readonly string SavePath = System.Configuration.ConfigurationSettings.AppSettings["SavePath"];
private int _editId;
public int EditId
{
get
{
_editId = );
return _editId;
}
set
{
_editId = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
//SetCondition();
}
}
protected void btnImport_Click(object o, EventArgs e)
{
//
string Msg = "";
;
;
//保存文件
string filePath = string.Format("~/{0}", SavePath);
filePath = Path.Combine(filePath, string.Format("{0}_{1}", UserObject.UserID.ToString(), fulOffLineData.FileName));
string strPhysicalPath = Server.MapPath(filePath);
fulOffLineData.PostedFile.SaveAs(strPhysicalPath);
{
IWorkbook workBook = null;
ISheet sheet = null;
IRow row = null;
try
{
//加载文档
using (FileStream fileStream = new FileStream(strPhysicalPath, FileMode.Open))
{
//不同格式实例化不同工作薄
if (strPhysicalPath.EndsWith(".xls"))//2003版本及以上
{
workBook = new HSSFWorkbook(fileStream);
}
else if (strPhysicalPath.EndsWith(".xlsx"))//2007版本及以上
{
workBook = new XSSFWorkbook(fileStream);
}
}
//加载指定工作薄
sheet = workBook.GetSheetAt();
//加载表头
IRow headerRow = sheet.GetRow();
ICell cellHeader = null;
ICell cell = null;
int cellCount = headerRow.LastCellNum;
DateTime dtTmpTime = DateTime.Now;
string Code;
string Address;
string regionid;
string ToiletType;
string area;
string ManSquatting;
string WomanSquatting;
string ManagerPersonTel;
string Jingdu;
string Weidu;
string ManagerPerson;
string ClearPerson;
string SuperviseTel;
string opentype;
string Remark;
string status;
string strTmpTime;
string strCreTime;
//遍历
; i <= sheet.LastRowNum; i++)
{
;
try
{
row = sheet.GetRow(i);
Toilet entity = new Toilet();
PcInfo para = new PcInfo();
)
{
para = PcInfoLogic.GetEntity(EditId);
}
else
{
para = new PcInfo();
}
//公厕编号
Code = row.GetCell().ToString();
if (!string.IsNullOrEmpty(Code))
{
para.Name = Code;
entity.Code = Code;
}
//详细位置
Address = row.GetCell().ToString();
if (!string.IsNullOrEmpty(Address))
{
entity.Address = Convert.ToString(Address);
para.Address = Convert.ToString(Address);
}
//区域名称返回区域编号
regionid = row.GetCell().ToString();
if (!string.IsNullOrEmpty(regionid))
{
entity.RegionID = Convert.ToInt32(RegionID(regionid));
}
//类型
ToiletType = row.GetCell().ToString();
if (!string.IsNullOrEmpty(ToiletType))
{
entity.ToiletType = ToiletID(ToiletType);
}
//面积
area = row.GetCell().ToString();
if (!string.IsNullOrEmpty(area))
{
entity.Area = ToiletID(area);
}
//男蹲位数
ManSquatting = row.GetCell().ToString();
if (!string.IsNullOrEmpty(ManSquatting))
{
entity.ManSquatting = Convert.ToInt16(ManSquatting);
}
//女蹲位数
WomanSquatting = row.GetCell().ToString();
if (!string.IsNullOrEmpty(WomanSquatting))
{
entity.WomanSquatting = Convert.ToInt16(WomanSquatting);
}
//经度
Jingdu = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(Jingdu))
{
entity.Jingdu = Jingdu;
}
//维度
Weidu = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(Weidu))
{
entity.Weidu = Weidu;
}
//建设时间
strTmpTime = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(strTmpTime))
{
if (DateTime.TryParse(strTmpTime, out dtTmpTime))
{
entity.BuildTime = dtTmpTime;
}
}
//开门时间
strCreTime = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(strCreTime))
{
if (DateTime.TryParse(strCreTime, out dtTmpTime))
{
entity.DbCreateDate = dtTmpTime;
}
}
//管理人
ManagerPerson = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(ManagerPerson))
{
entity.ManagerPerson = ManagerPerson;
}
//管理人员电话
ManagerPersonTel = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(ManagerPersonTel))
{
entity.ManagerPersonTel = ManagerPersonTel;
}
//保洁人员
ClearPerson = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(ClearPerson))
{
entity.ClearPerson = ClearPerson;
}
//监督电话
SuperviseTel = Convert.ToString(row.GetCell());
if (!string.IsNullOrEmpty(SuperviseTel))
{
entity.SuperviseTel = SuperviseTel;
para.Phone = SuperviseTel;
}
//开放状态
opentype = OpenTypeID(row.GetCell().ToString());
if (!string.IsNullOrEmpty(opentype))
{
entity.OpenType = Convert.ToInt32(opentype);
}
//影像URL
Remark = Convert.ToString(row.GetCell().ToString());
if (!string.IsNullOrEmpty(Remark))
{
entity.Remark = Remark;
para.Desc = Remark;
}
//建设状态
status = StatusID(row.GetCell().ToString());
if (!string.IsNullOrEmpty(status))
{
entity.Status = Convert.ToInt32(status);
}
)
{
PcInfoLogic.Update(para);
entity = ToiletLogic.GetEntity(EditId);
}
else
{
para.DbCreateDate = DateTime.Now;
para.DbLastUpdateDate = DateTime.Now;
para.DbCreateID = UserObject.UserID;
para.MapData = new Microsoft.SqlServer.Types.SqlGeometry();
//公众服务信息表
PcInfoId = (int)PcInfoLogic.Insert(para);
entity.ID = PcInfoId;
}
)
{
entity.DbCreateDate = DateTime.Now;
entity.DbCreateID = UserObject.UserID;
//厕所表
ToiletLogic.Insert(entity);
}
else
{
ToiletLogic.Update(entity);
}
iAddedCount++;
}
catch { iFaileCount++; }
}
//回收资源
cellHeader = null;
headerRow = null;
}
catch (Exception ex)
{
}
finally
{
if (row != null)
row = null;
if (sheet != null)
sheet = null;
if (workBook != null)
{
//workBook.Clear();
workBook = null;
}
}
}
//删除文件
File.Delete(strPhysicalPath);
//返回处理结果
//关闭窗口并刷新父窗口
base.WriteClientScript(string.Format("jUIDialog('导入成功{0}条,失败{1}条!{2}');", iAddedCount, iFaileCount, Msg) + "try{$(document).ready(function(){RelashParent();});}catch(e){}");
}
//根据公厕名称获取公厕编号
public static string RegionID(string RegionName )
{
DataTable ds = ToiletLogic.RegionID(RegionName);
][].ToString();;
}
//根据类型名称获取类型编号
public static int ToiletID(string ToiletName)
{
;
if (ToiletName=="移动厕所")
{
ToiletID= ;
}
else if (ToiletName=="一类水冲公厕")
{
ToiletID = ;
}
else
{
ToiletID = ;
}
return ToiletID;
}
//根据建设状态返回建设编号
public static string StatusID(string StatusName)
{
";
if (StatusName == "建成")
{
StatusID = ";
}
else
{
StatusID = ";
}
return StatusID;
}
//根据开放状态返回建设编号
public static string OpenTypeID(string OpenTypeName)
{
";
if (OpenTypeName == "开放")
{
OpenTypeID =";
}
else
{
OpenTypeID =";
}
return OpenTypeID;
}
}
}
HttpPostedFile file = FileUpload1.PostedFile;
string fileExt = Path.GetExtension(file.FileName);
DataTable dt = new DataTable();
int mon = Convert.ToInt32(drpMonth.SelectedValue);
int year = Convert.ToInt32(drpYear.SelectedValue);
int times = DateTime.DaysInMonth(year, mon);
if (fileExt != ".xls" && fileExt != ".xlsx")
{
}
else
{
try
{
dt = ExcelToDatatable(file.InputStream).Select("c_grid is not null").CopyToDataTable();
}
catch (Exception ex)
{
throw ex;
//ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language='javascript' type='text/javascript'>alert('读取数据出错,请检查文件格式是否正确后重试!');</script>");
}
}
private DataTable ExcelToDatatable(Stream inStream)
{
DataTable dt = new DataTable();
int mon =Convert.ToInt32(drpMonth.SelectedValue);
int year = Convert.ToInt32(drpYear.SelectedValue);
int times = DateTime.DaysInMonth(year, mon);
;
using (HSSFWorkbook workbook = new HSSFWorkbook(inStream))
{
HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt();
System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
;
rows.MoveNext();//第一行没用
rows.MoveNext();//第二行没用
n++;
string strGrid = "";
while (rows.MoveNext())
{
HSSFRow row = (HSSFRow)rows.Current;
)//定义列的行
{
List<DataColumn> columnList = new List<DataColumn>() {
new DataColumn("c_grid"),
new DataColumn("c_name"),
new DataColumn("c_date"),
new DataColumn("c_1"),
new DataColumn("c_2"),
new DataColumn("c_3"),
new DataColumn("c_4"),
new DataColumn("c_5"),
new DataColumn("c_6"),
new DataColumn("c_7"),
new DataColumn("c_8"),
new DataColumn("c_9"),
new DataColumn("c_10"),
new DataColumn("c_11"),
new DataColumn("c_12"),
new DataColumn("c_13"),
new DataColumn("c_14"),
new DataColumn("c_15"),
new DataColumn("c_16"),
new DataColumn("c_17"),
new DataColumn("c_18"),
new DataColumn("c_19"),
new DataColumn("c_20"),
new DataColumn("c_21"),
new DataColumn("c_22"),
new DataColumn("c_23"),
new DataColumn("c_24"),
new DataColumn("c_25"),
new DataColumn("c_26"),
new DataColumn("c_27"),
new DataColumn("c_28"),
new DataColumn("c_29"),
new DataColumn("c_30"),
new DataColumn("c_31")
};
foreach (DataColumn column in columnList)
{
dt.Columns.Add(column);
}
}
else
{
DataRow dtRow = dt.NewRow();
//string rValue = "";
; i <= dayCount; i++)
{
HSSFCell cell = (HSSFCell)row.GetCell(i);
)
{
if (cell == null)
{
dtRow[] = strGrid;
}
else
{
if (!string.IsNullOrEmpty(cell.ToString()))
{
strGrid = cell.ToString();
}
dtRow[] = strGrid;
}
}
else
{
if (cell == null)
{
dtRow[i - ] = "";
}
else
{
dtRow[i - ] = cell.ToString();
}
}
}
dt.Rows.Add(dtRow);
}
n++;
}
}
return dt;
}
NPOI导入xls,xlsx格式实例的更多相关文章
- POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)
一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...
- 关于jquery js读取excel文件内容 xls xlsx格式 纯前端
附带参考:http://blog.csdn.net/gongzhongnian/article/details/76438555 更详细导入导出:https://www.jianshu.com/p/7 ...
- NPOI导入Excel日期格式的处理 - 附类型格式匹配表
传统操作Excel方法在部署的时候遇到很多问题,如目标主机需要安装Excel.64位电脑不支持.需要安装相关驱动程序等.所以我们一般会使用开源的NPOI来替代传统的Excel操作方法,NPOI的优点是 ...
- C# NPOI 导入与导出Excel文档 兼容xlsx, xls
之前写了个小程序,导出一些数据成Excel,程序使用的是Microsoft.Office.Interop.Excel类来操作Excel. 在本机测试的时候都好好的,但是将生成文件放到其他电脑上却怎样也 ...
- [转]C# NPOI 导入与导出Excel文档 兼容xlsx, xls
本文转自:https://www.cnblogs.com/lazyneal/p/6148912.html 参考:http://www.cnblogs.com/restran/p/3889479.htm ...
- NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式
下载地址 http://npoi.codeplex.com/releases 下面放一个 NPOIHelper 助手类吧,也不是我写的- NpoiExcelHelper 可以生成xlsx格式publi ...
- C# NPOI 导入与导出Excel文档 兼容xlsx, xls(xf13中已经引用了xlsx的npoi)
这里使用的NPOI版本为: 2.1.3.1 官方下载地址: http://npoi.codeplex.com/releases 版本内包含.Net 2.0 与.Net 4.0 .Net 4.0中包含文 ...
- C# 将DataGridView中显示的数据导出到Excel(.xls和.xlsx格式)—NPOI
前言 https://blog.csdn.net/IT_xiao_guang_guang/article/details/104217491 本地数据库表中有46785条数据,测试正常 初次运行程 ...
- NPOI导入excel为datatable (xls xlsx xlsm)
使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中 http://www.cnblogs.com/songrun/p/3547738.html NPOI 2.0教程 – 自动 ...
随机推荐
- Oracle 11g中修改默认密码过期天数和锁定次数
Oracle 11g中修改默认密码过期天数和锁定次数 密码过期的原因一般有两种可能: 一.由于Oracle中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180 ...
- Linux 命令快捷键
Linux 命令快捷键 tab 自动补齐(有不知道的吗)Ctrl+u 删除(剪切)此处至开始所有内容 Ctrl+k 删除从光标所在位置到行末 快速命令行 – 快捷方式• history 搜索历史执行过 ...
- stream数据流
首先必须先要了解Buffer,Buffer是js和c++的结合体,类数组,通常与Stream一起用: 1. (1).Buffer是个类,因此可以构建成对象 (2).buf具有数组的性质 字符串转换成二 ...
- Java多线程代码示例
package algorithm; class Mythread extends Thread{ String name; public Mythread(String name){ this.na ...
- hasOwnProperty 递归 简单回调 链式调用
1.hasOwnProperty 函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false. function Box(){ ...
- java 反射机制
1.反射机制是什么: (1)反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能 ...
- Android Studio Jni 环境搭建
第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置 安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压.下面给出两个下载地址 (1)官网:http://we ...
- 【转】mybatis实战教程(mybatis in action),mybatis入门到精通
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...
- 最新IP地址数据库 二分逼近&二分查找 高效解析800万大数据之区域分布
最新IP地址数据库 来自 qqzeng.com 利用二分逼近法(bisection method) ,每秒300多万, 比较高效! 原来的顺序查找算法 效率比较低 readonly string i ...
- struts 异常机制
1.try-catch 在Action中通过try-catch捕获异常,在catch中返回字符串, 通过返回的字符串在Action的result元素中进行匹配,最终返回响应的页面 2. 局部异常映射 ...