导入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里却预览不到数据行,只能看见标题行 ...
随机推荐
- cdnbest独立主控配置自定义错误页面
注:自定义错误的域名最好配置ssl,不配碰到有使用ssl的域名,错误码显示就会有问题 (1)登陆管理后台点区域列表-->配置-->错误url 解析一个域名到你的cdn主控,然后输入这个ur ...
- python的if条件判断
python的条件判断书写格式: 基本格式 if 条件判断: #条件判断通过,则执行下面的语句 执行语句 执行语句 ... else: #条件判断不通过,则执行下面的语句 执行语句 执行语 ...
- Swift 闭包即OC中的Block
- 闭包的定义 1.提前准备好的代码 2.在需要的时候执行 3.可以当做参数传递 // 1.最简单的闭包 // () -> () 没有参数,没有返回值的函数 // 如 ...
- DevExpress数据源 BindingList<FilesList> 与BindSource 使用区别
这两个都能实现对接girdcontrol.datasource . 我只是说我自己用的时候的差异 bingsource bs 添加了对象 之后成为一个对象集合 你是无法用foreach (var ...
- vue-computed计算属性
计算属性:用来封装你想对一个属性进行的操作 computed VS mothod实现的效果和定义一个methods中的function相同,但是他们的区别在于:methods的function当触发重 ...
- 21. pt-stalk
pt-stalk 适用场景:MySQL Server 性能波动出现的频率很低.例如.几天一次MySQL Server 性能波动出现的机率很快.例如.几秒闪过 pt-stalk h=192.168.10 ...
- nginx简单权限配置
一.指定ip段 location / { allow 172.17.0.1/24; deny all; } 二.指定认证账户 location / { auth_basic "please ...
- 源码管理工具Git-客户端GitBash常用命令
1.配置用户名和邮箱地址(第一次启动程序时配置,以后使用不用配置)git config --global user.name "dolen"git config --global ...
- ssm框架中处理json格式的数据步骤
1.导架包 <!--处理json--> <dependency> <groupId>com.fasterxml.jackson.core</groupId&g ...
- opencv源码编写规则
OPENCV作为一种开源的计算机视觉库,我们有必要去了解这个库的一些编码格式及文件结构. 1.文档命名规则 必须将所有功能放入一个或多个.cpp和.hpp文件到OpenCV的相应模块中,或者如果贡献的 ...