选择文件

 #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. python 迭代多个对象

    并行迭代 zip for a,b,c in zip(list,list,tuple,list): print a,b,c 串行迭代 itertools.chain a = [1,2,3,4,5] b ...

  2. python 处理时间 datetime 三板斧

    import datetime1)#str -> datetime对象,(datetime对象之间可加减,date[0]为str) datetime.datetime.strptime(date ...

  3. Django缓存设置

    由于Django构建得是动态网站,每次客户端请求都要严重依赖数据库,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...

  4. SpringMVC不能引入静态资源

    SpringMVC不能引入静态资源 问题:部署项目后程序加载或用浏览器访问时出现类似的警告, 2011-01-19 10:52:51,646 WARN [org.springframework.web ...

  5. Robotics Tools

    https://sites.google.com/site/sunglok/rv_tool/robot Robotics Tools Contents 1 Robotics Tutorials 2 R ...

  6. Pandas处理丢失数据

    1.创建含NaN的矩阵 >>> dates = pd.date_range(', periods=6) >>> df = pd.DataFrame(np.arang ...

  7. JMD Handy Baby 2 to Decode & Adding New BMW 525 ID46 Key

    Here OBD2TOOL share the guide on how to use JMD Handy Baby II to decode and add new keys for BMW 525 ...

  8. Change the default MySQL data directory with SELinux enabled

    转载:https://rmohan.com/?p=4605 Change the default MySQL data directory with SELinux enabled This is a ...

  9. zabbix简介与部署

    zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管 ...

  10. MYSQL性能查看(多指标)

    网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一 ...