导入Excel文件
选择文件
#region
//获取路径
string FilePath = "";
//选择文件
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//获取本地启动路径
string str = System.Windows.Forms.Application.StartupPath;
openFileDialog1.InitialDirectory = str + "\\";
openFileDialog1.Filter = "所有文件(*.*)|*.*";
openFileDialog1.RestoreDirectory = false;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
FilePath = openFileDialog1.FileName;
//获得文件的扩展名
string IsXls = System.IO.Path.GetExtension(FilePath).ToString().ToLower();
if (!FilePath.Equals(""))
{
if (IsXls == ".xlsx" || IsXls == ".xls")
{
//调用方法
方法名(FilePath);
}
else
{
MessageBox.Show("只可以选择Excel格式文件,请重新选择文件!");
return;
}
}
#endregion
读取excel到datatable
#region 读取excel到datatable
public static DataTable ExcelToDataTable(string FilePath)
{
DataTable dtExcel = new DataTable();
try
{
if (RCExportExcel.isOfficeInstall("11.0") || RCExportExcel.isOfficeInstall("12.0")
|| RCExportExcel.isOfficeInstall("14.0") || RCExportExcel.isOfficeInstall("15.0"))
{
#region 安装Office
dtExcel = OfficeExcel(FilePath);
#endregion
}
else
{
#region 未安装Office
dtExcel = NpoiExcel(FilePath);
#endregion
}
}
catch (Exception ex)
{
WriteLog(ex.Message + ",错误行号:" + ex.StackTrace);
MessageBox.Show("Excel文件被占用,请关闭Excel文件再进行导入操作!");
}
return dtExcel;
}
#endregion
Office读取Excel
#region Office读取Excel
/// <param name="excelPath">excel地址</param>
/// <returns>成功返回datatable,失败返回null</returns>
public static DataTable OfficeExcel(string excelPath)
{
DataTable dtexcel = new DataTable();
string strConn;
try
{
FileInfo fileInfo = new FileInfo(excelPath);//判断文件是否存在
if (fileInfo.Exists)
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Properties='Excel
12.0;HDR=Yes;IMEX=;'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable tbNames = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //得到所有工作簿名称
string tbName = tbNames.Rows[]["TABLE_NAME"].ToString();
OleDbDataAdapter oda = new OleDbDataAdapter("select * from [" + tbName + "]", conn);
DataSet ds = new DataSet(); //必须要使用DataSet对象
oda.Fill(ds, "tempExport");
dtexcel = ds.Tables[];
conn.Close();
}
}
catch (Exception e)
{
WriteLog(e.Message + ",错误行号:" + e.StackTrace);
MessageBox.Show("Excel文件被占用,请关闭Excel文件再进行导入操作!");
return dtexcel;
}
finally
{
//释放资源
if (dtexcel != null) { dtexcel.Dispose(); }
}
return dtexcel;
}
#endregion
NPOI 读取Excel
#region NPOI 读取Excel
/// <param name="excelPath">excel地址</param>
/// <returns>成功返回datatable,失败返回null</returns>
public static DataTable NpoiExcel(string excelPath)
{
IWorkbook workbook = null;//全局workbook
ISheet sheet;//sheet
DataTable table = null;
try
{
FileInfo fileInfo = new FileInfo(excelPath);//判断文件是否存在
if (fileInfo.Exists)
{
FileStream fileStream = fileInfo.OpenRead();//打开文件,得到文件流
switch (fileInfo.Extension)
{
//xls是03,用HSSFWorkbook打开,.xlsx是07或者10用XSSFWorkbook打开
case ".xls":
workbook = new HSSFWorkbook(fileStream); break;
case ".xlsx":
workbook = new XSSFWorkbook(fileStream); break;
default: break;
}
fileStream.Close();//关闭文件流
}
if (workbook != null)
{
sheet = workbook.GetSheetAt();//读取到指定的sheet
table = new DataTable();//初始化一个table IRow headerRow = sheet.GetRow();//获取第一行,一般为表头
int cellCount = headerRow.LastCellNum;//得到列数 for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);//初始化table的列
table.Columns.Add(column);
}
//遍历读取cell
for (int i = (sheet.FirstRowNum + ); i <= sheet.LastRowNum; i++)
{
NPOI.SS.UserModel.IRow row = sheet.GetRow(i);//得到一行
DataRow dataRow = table.NewRow();//新建一个行 for (int j = row.FirstCellNum; j < cellCount; j++)
{
ICell cell = row.GetCell(j);//得到cell
if (cell == null)//如果cell为null,则赋值为空
{
dataRow[j] = "";
}
else
{
dataRow[j] = row.GetCell(j).ToString();//否则赋值
}
} table.Rows.Add(dataRow);//把行 加入到table中 }
}
return table; }
catch (Exception e)
{
WriteLog(e.Message + ",错误行号:" + e.StackTrace);
MessageBox.Show("Excel文件被占用,请关闭Excel文件再进行导入操作!");
return table;
}
finally
{
//释放资源
if (table != null) { table.Dispose(); }
workbook = null;
sheet = null;
}
}
#endregion
验证身份证号,得到出生日期,性别
#region 验证身份证号,得到出生日期,性别
public static void AuthenticationIdcard(string idcard)
{
try
{
DateTime birthday = new DateTime();
string sex = string.Empty;
bool id = true;
if (!Regex.IsMatch(idcard, @"^(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$", RegexOptions.IgnoreCase))
{
id = false;
}
if (id)
{
if (idcard.Length == )
{
birthday = DateTime.Parse(idcard.Substring(, ).Insert(, "-").Insert(, "-"));
sex = idcard.Substring(, );
if (int.Parse(sex) % == )//性别代码为偶数是女性奇数为男性
sex = "女";
else
sex = "男";
}
else if (idcard.Length == )
{
string a = "";
birthday = DateTime.Parse(a + idcard.Substring(, ).Insert(, "-").Insert(, "-"));
string tmp = idcard.Substring(idcard.Length - );
int sx = int.Parse(tmp);
int outNum;
Math.DivRem(sx, , out outNum);
if (outNum == )
sex = "女";
else
sex = "男";
DataRow row = dtRightIdcard.NewRow();
row["身份证号"] = idcard;
row["出生日期"] = birthday;
row["性别"] = sex;
row["nationid"] = "";
dtRightIdcard.Rows.Add(row);
}
else if (idcard.Length == )
{
birthday = DateTime.Parse("1950-01-01");
sex = "";
DataRow row = dtRightIdcard.NewRow();
row["身份证号"] = idcard;
row["出生日期"] = birthday;
row["性别"] = sex;
row["nationid"] = "";
dtRightIdcard.Rows.Add(row);
}
}
catch
{ throw;
}
}
#endregion
转载请注明出入来源:https://www.cnblogs.com/famhuai/p/8257279.html
导入Excel文件的更多相关文章
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- Java POI导入Excel文件
今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...
- phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。
工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...
- YII使用PHPExcel导入Excel文件的方法
1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php 'import'= ...
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- excel数据 入库mysql 和 mysql数据 导入excel文件
1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...
- java后端导入excel模板和导入excel文件去读数据
模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...
- C# Aspose.Cells方式导入Excel文件
读取Excel 类 我返回的是DataTable 类型 也可以返回DataSet类型 public class XlsFileHelper { public DataTable ImportExcel ...
- 利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库 1. 实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...
- PLSQL导入Excel文件预览不到数据行问题
今天,从Excel导入Oracle一些数据,在导入的过程中,遇到一个问题,Excel里面有好几万条数据,但是通过PLSQL导入向导导入Excel文件之后,在PLSQL里却预览不到数据行,只能看见标题行 ...
随机推荐
- js控制easyui文本框例子及控制html例子
easyui $('#value').textbox('setValue',''); //赋值 $('#value').textbox({required:false});//必填,方框变红 $('# ...
- 245. Shortest Word Distance III 单词可以重复的最短单词距离
[抄题]: Given a list of words and two words word1 and word2, return the shortest distance between thes ...
- Linux用户态驱动设计
聊聊Linux用户态驱动设计 序言 设备驱动可以运行在内核态,也可以运行在用户态,用户态驱动的利弊网上有很多的讨论,而且有些还上升到政治性上,这里不再多做讨论.不管用户态驱动还是内核态驱动,他们都 ...
- git基本
基本的git操作 git config --global user.name "你的名字或昵称" git config --global user.email "你的邮箱 ...
- 关闭浏览器时提示的javascript事件
onbeforeunload事件 它是这样用的: <script language="javascript"> g_blnCheckUnload = true; fun ...
- leveldb 学习记录(六)SSTable:Block操作
block结构示意图 sstable中Block 头文件如下: class Block { public: // Initialize the block with the specified con ...
- rpc和http
rpc,远程过程调用,分布式各服务在不同的节点,因为不在同一进程中,所以节点间的调用需要通过网络进行传输,rpc是基于tcp/ip的,通过长连接进行通信.客户端需要缓存服务端的ip和端口,服务端也要缓 ...
- quick-cocos2d-x lua框架解析(一)对UI进行操作的UiUtil脚本
最近一段时间接手了一个cocos游戏项目,由于我是U3D开发入门,所以花了一段时间来钻研cocos2d的使用与项目架构.与U3D相比,cocos2d的开发界面实在做的不咋地.不过在看过源码之后,源码跑 ...
- 2019.03.01 bzoj3075: [Usaco2013]Necklace(kmp+dp)
传送门 题意简述:给出S,TS,TS,T两个字串,∣S∣≤10000,∣T∣≤1000|S|\le10000,|T|\le1000∣S∣≤10000,∣T∣≤1000,问至少从SSS中删去几个字符能够 ...
- Linux 第七天
软件包管理 1.软件包分类 1)源码包(脚本安装包) 优点: l 开源,如果有足够的能力,可以修改源代码 l 可以自由选择所需的功能 l 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更 ...