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教程 – 自动 ...
随机推荐
- CentOS 7.2 安装配置Samba服务器
1背景 转Linux刚刚1年,vim操作还不能应对工程代码,之前一直都是Gnome桌面 + Clion 作开发环境,无奈在服务器上没有这样的环境, 看同事是(Windows)Source Insigh ...
- 通过Maven将Web程序部署到远程Tomcat8服务器的一些注意事项
1.环境变量检查(注意一定要做,否则会出现莫名其妙的错误):JAVA_HOMEM2_HOMECATALINA_HOME 2.开发环境检查,在Eclipse开发环境中最好做以下两方面的检查 2.1)Ma ...
- 设置文本框左边显示的View
效果:
- BaseAdapter日常的封装
我们日常开发中BaseAdapter使用非常的多,大家有没有想过,再进一步封装,将平常使用的对象集合,利用泛型放入集合中,再也不用每次都重写那几个方法了,当然我也提供我的下载地址(https://gi ...
- NoSql 中Mongodb数据库的使用
1.NoSql数据库简介 2.MongoDB数据库的简介 3.MongoDB下Windows下的安装
- XP 安装Oralce 10g 数据库
今天使用XP新建一个新数据库,下面是自己的操作方法, 电脑版本型号:Microsoft Windows XP Professional 版本 2002 Service Pack 3 Oracle版本型 ...
- .NET委托和事件
.net学习之委托和事件 1.什么是委托 通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器 上传图片: 2.委托语法 准备一个方法:string Hello(string ...
- [原] Page_Load执行了两次,为什么?如何解决!
今儿个发现Page_Load执行了两次,想不通.后来,经找资料,总算查出原因.1.在aspx页面上写了 AutoEventWireup="true" ,这样Page_Load会自动 ...
- Oracle sql语句执行顺序
sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...
- PHP开发中的缓存技术汇总
在PHP开发中,出于对网站服务器负载的考虑,往往需要对页面.数据等内容进行缓存处理,下面就来看看,在PHP开发中有哪些缓存方式吧. 1.页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存, ...