导入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里却预览不到数据行,只能看见标题行 ...
随机推荐
- JavaScript onclick传递对象参数(easyui传递一行数据时)错误:uncaught SyntaxError: Unexpected identifier
JavaScript onclick传递对象参数(easyui传递一行数据时)错误:uncaught SyntaxError: Unexpected identifier 博主遇到的是用onclick ...
- 426. Convert Binary Search Tree to Sorted Doubly Linked List把bst变成双向链表
[抄题]: Convert a BST to a sorted circular doubly-linked list in-place. Think of the left and right po ...
- 记一次SQL性能优化,查询时间从4000ms优化到200ms.
以下这句SQL是从PLM中获取代办工作流的.没优化前SQL语句执行一次大概4000ms(4秒). select ch.change_number changeNumber, f.text change ...
- Python中使用RabbitMQ
一 RabbitMQ简介 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息 ...
- 新建一个项目,如何使用abp用户登录系统
1.首先参考Framework.Web里的packages.config,把相关的包都安装好. 2.App_Start文件夹下的xxxModule.cs和Startup.cs拷过来,修改下命名空间. ...
- ES6 扩展运算符
ES6的扩展运算符则可以看作是rest参数的逆运算.可以将数组转化为参数列表. 如:console.log(1,...[2,3,4],5) //1 2 3 4 5 用于合并数组: [1,2, ...m ...
- NC 5导出Excel
Excel导出功能 NC中功能事件代码: @Override protected void onBoRefresh() throws Exception { UIFileChooser fc = ne ...
- json字符转对象之new Function('return ' + str)
var jsonStr = '{"id":1,"name":"linda","hobbies":[{"id&q ...
- 别人的Linux私房菜(11)认识与学习BASH
Linux下使用BASH Bourne Again Shell 另外一种由用于Unix的伯克利大学的Bill Joy设计的C Shell 系统中合法的shell会写入到/etc/sh ...
- Python开发——5.函数
一.函数的定义 def test(x) "The Function definitions" x += return x def:定义函数的关键字 test:函数名 ():定义形参 ...