选择文件

 #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文件的更多相关文章

  1. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  2. Java POI导入Excel文件

    今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...

  3. phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。

    工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...

  4. YII使用PHPExcel导入Excel文件的方法

    1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php 'import'= ...

  5. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  6. excel数据 入库mysql 和 mysql数据 导入excel文件

    1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...

  7. java后端导入excel模板和导入excel文件去读数据

    模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...

  8. C# Aspose.Cells方式导入Excel文件

    读取Excel 类 我返回的是DataTable 类型 也可以返回DataSet类型 public class XlsFileHelper { public DataTable ImportExcel ...

  9. 利用kettle组件导入excel文件到数据库

    利用kettle组件导入excel文件到数据库 1.     实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...

  10. PLSQL导入Excel文件预览不到数据行问题

    今天,从Excel导入Oracle一些数据,在导入的过程中,遇到一个问题,Excel里面有好几万条数据,但是通过PLSQL导入向导导入Excel文件之后,在PLSQL里却预览不到数据行,只能看见标题行 ...

随机推荐

  1. Java 运行时常量池

    运行时常量池是方法区的一部分.class中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放在方法区的运行时常量池 ...

  2. 动画之一:视图动画 View Animation

    原文:https://blog.csdn.net/pzm1993/article/details/77167049 view动画支持4中动画效果,分别是: 透明度动画(AlphaAnimation) ...

  3. php中对象赋值问题

    今天遇到一个问题, 一开始拼接的SQL语句,然后想多次使用时发现会被重置,然后想到给重新赋值一次,但是发现这样赋值会出问题,百思不得其解,最后经过搜索,发现PHP中对象赋值给一个变量之类的赋值的其实是 ...

  4. tomcat7闪退

    问题是我昨天运行的好好的,今天加了些代码,tomcat7就会启动闪退.我把conf/server.xml中的<Context />去掉,tomcat又能正常启动! 那么问题出在哪里呢? 我 ...

  5. 源发行版 1.8 需要目标发行版 1.8以及usage of api documented as @since 1.8+

    Maven项目每个Module都有单独的pom.xml,如果不在pom.xml中进行配置,则默认将Module的Language Level设置为5.所以要在pom.xml文件中添加插件进行配置. & ...

  6. input type="file"多图片上传 原生html传递的数组集合

    单个的input type="file"表单也是可以实现多图片上传的 代码如下: <form action="manypic.php" method=&q ...

  7. (转)android import library switch语句报错case expressions must be constant expressions

    今天当我从github上下载一个工程,并把它的库文件导入eclipse中,发现switch语句报错case expressions must be constant expressions : 解决方 ...

  8. Django haystack+solr搜索引擎部署的坑.

    跟着<<Django by Example>> 一路做下来,到了搭建搜索引擎的步骤 默认的思路是用 obj.objects.filter(body__icontains='fr ...

  9. [C#.net]ListBox对Item进行重绘,设置背景色和前景色

    别的不多说了,上代码,直接看 首先设置这行,或者属性窗口设置,这样才可以启动手动绘制,参数有三个 Normal: 自动绘制 OwnerDrawFixed:手动绘制,但间距相同 OwnerDrawVar ...

  10. Java集合:ArrayList的实现原理

    Java集合---ArrayList的实现原理   目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 ...