public ActionResult TestExcel(string filePath)
{
return View();
}
/// <summary>
/// 根据Excel列类型获取列的值
/// </summary>
/// <param name="cell">Excel列</param>
/// <returns></returns>
private static string GetCellValue(ICell cell)
{
if (cell == null)
return string.Empty;
switch (cell.CellType)
{
case CellType.Blank:
return string.Empty;
case CellType.Boolean:
return cell.BooleanCellValue.ToString();
case CellType.Error:
return cell.ErrorCellValue.ToString();
case CellType.Numeric:
case CellType.Unknown:
default:
return cell.ToString();
case CellType.String:
return cell.StringCellValue;
case CellType.Formula:
try
{
HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook);
e.EvaluateInCell(cell);
return cell.ToString();
}
catch
{
return cell.NumericCellValue.ToString();
}
}
} /// <summary>
/// Excel导入
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public DataTable ImportExcelFile(string filePath)
{
HSSFWorkbook hssfworkbook;
#region//初始化信息
try
{
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new HSSFWorkbook(file);
}
}
catch (Exception e)
{
throw e;
}
#endregion ISheet sheet = hssfworkbook.GetSheetAt();
DataTable table = new DataTable();
IRow headerRow = sheet.GetRow();//第一行为标题行
int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells
int rowCount = sheet.LastRowNum - ; for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
for (int i = (sheet.FirstRowNum + ); i <= rowCount; i++)
{
IRow row = sheet.GetRow(i);
DataRow dataRow = table.NewRow(); if (row != null)
{
for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = GetCellValue(row.GetCell(j));
}
} table.Rows.Add(dataRow);
}
using (SqlBulkCopy abc = new SqlBulkCopy(SqlConnectionFactory.Connection))
{
abc.BatchSize = table.Rows.Count;
abc.BulkCopyTimeout = ;
abc.DestinationTableName = "ExcelTable";
for (int i = ; i < table.Columns.Count; i++)
{
abc.ColumnMappings.Add(table.Columns[i].ColumnName, i);
}
abc.WriteToServer(table);
}
return table;
} [HttpPost]
public ActionResult TestExcel(FormCollection form)
{
HttpPostedFileBase file = Request.Files[];
string path = Server.MapPath("\\Models");
path += "\\" + file.FileName;
file.SaveAs(path);
ImportExcelFile(path);
return View();
}
public string EE()
{
using (SqlConnection con = SqlConnectionFactory.Connection)
{
string sql = "select TsetId,TheDate, Tnumber, Tname, Depter, Bdate, Beonduty, GetoffWork, BeondutyTwo, GetoffWorkTwo, Belate, Leaver, Absenceoftime, Total, BText from ExcelTable";
var list = con.Query(sql);
return JsonConvert.SerializeObject(list);
}
}
public ActionResult Detailss()
{
ExcelExprot();
return View();
}
protected void ExcelExprot()
{
string schoolname = "";
//创建Excel文件的对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
//添加一个sheet
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
//获取list数据
List<Models.TesModel> listRainInfo = GetAlll();// m_BLL.GetSchoolListAATQ(schoolname);
//给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow();
row1.CreateCell().SetCellValue("工号");
row1.CreateCell().SetCellValue("姓名");
row1.CreateCell().SetCellValue("所属部门");
row1.CreateCell().SetCellValue("时间");
row1.CreateCell().SetCellValue("上班");
row1.CreateCell().SetCellValue("下班");
row1.CreateCell().SetCellValue("上班");
row1.CreateCell().SetCellValue("下班");
row1.CreateCell().SetCellValue("迟到时间(分钟)");
row1.CreateCell().SetCellValue("早退时间(分钟)");
row1.CreateCell().SetCellValue("缺勤时间(分钟)");
row1.CreateCell().SetCellValue("合计");
row1.CreateCell().SetCellValue("备注"); //将数据逐步写入sheet1各个行 年龄>备注
for (int i = ; i < listRainInfo.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + );
rowtemp.CreateCell().SetCellValue(listRainInfo[i].TsetId.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].TheDate.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Tnumber.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Tnumber.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Tname.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Depter.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Bdate.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Beonduty.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].GetoffWork.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].BeondutyTwo.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Belate.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Leaver.ToString());
rowtemp.CreateCell().SetCellValue(listRainInfo[i].Absenceoftime.ToString()); }
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
ms.Seek(, SeekOrigin.Begin); ms.Flush();
ms.Position = ;
//编辑完后 通过response输出
Response.Clear();
Response.Buffer = true;
Response.Charset = "UTF8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/msexcel";
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("考勤明细.xls"));
Response.BinaryWrite(ms.ToArray());
Response.Flush();
Response.End();
}
private List<Models.TesModel> GetAlll()
{
List<Models.TesModel> list = new List<Models.TesModel>();
string sql = "select TsetId,TheDate, Tnumber, Tname, Depter, Bdate, Beonduty, GetoffWork, BeondutyTwo, GetoffWorkTwo, Belate, Leaver, Absenceoftime from ExcelTable";
SqlConnection DBper = SqlConnectionFactory.Connection;
var oo = DBper.Query(sql);
var json = JsonConvert.SerializeObject(oo);
list = JsonConvert.DeserializeObject<List<Models.TesModel>>(json);
return list;
}

控制器

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-3.3.1.js"></script>
</head>
<body>
<div>
<form action="/Home/TestExcel" enctype="multipart/form-data" method="post">
<text>选择:(工作表名“Sheet1”)</text>
<input name="file" type="file" id="file" />
<input type="submit" name="Upload" value="导入" />
</form>
<input id="Button1" type="button" value="导出" onclick="location.href='/Home/Detailss'" />
<table>
<thead>
<tr>
<th>工号</th>
<th>姓名</th>
<th>所属部分</th>
<th>时间</th>
<th>上班</th>
<th>下班</th>
<th>上班</th>
<th>下班</th>
<th>迟到时间(分钟)</th>
<th>早退时间(分钟)</th>
<th>缺勤时间(分钟)</th>
<th>合计(分钟)</th>
<th>备注</th>
</tr>
</thead>
<tbody id="tb"></tbody>
</table>
</div>
<script>
$(document).ready(function () {
$.ajax({
url: '/Home/EE',
dataType: 'json',
type: 'get',
success: function (data) {
$(data).each(function () {
var tr = '<tr>'
+ '<td>' + this.TsetId + '</td>'
+ '<td>' + this.TheDate+'</td>'
+ '<td>' + this.Tnumber + '</td>'
+ '<td>' + this.Tname + '</td>'
+ '<td>' + this.Depter + '</td>'
+ '<td>' + this.Bdate + '</td>'
+ '<td>' + this.Beonduty + '</td>'
+ '<td>' + this.GetoffWork + '</td>'
+ '<td>' + this.BeondutyTwo + '</td>'
+ '<td>' + this.GetoffWorkTwo + '</td>'
+ '<td>' + this.Belate + '</td>'
+ '<td>' + this.Leaver + '</td>'
+ '<td>' + this.Absenceoftime + '</td>'
+ '<td>' + this.Total + '</td>'
+ '<td>' + this.BText + '</td>'
+ '</tr>';
$("#tb").append(tr);
})
}
})
})
</script>
</body> </html>

View

 public class SqlConnectionFactory
{
private static readonly string ConnString =
ConfigurationManager.ConnectionStrings["DapperDemo"].ConnectionString; private static object _obj = new object(); public static SqlConnection Connection
{
get
{
SqlConnection connection = null; if (connection == null)
{
lock (_obj)
{
if (connection == null)
{
connection = new SqlConnection(ConnString);
}
}
}
connection.Open();
return connection;
}
}
}

帮助类

/// <summary>
/// 实体转换辅助类
/// </summary>
public class ModelConvertHelper<T> where T : new()
{
public static IList<T> ConvertToModel(DataTable dt)
{
// 定义集合
IList<T> ts = new List<T>(); // 获得此模型的类型
Type type = typeof(T);
string tempName = ""; foreach (DataRow dr in dt.Rows)
{
T t = new T();
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
tempName = pi.Name; // 检查DataTable是否包含此列 if (dt.Columns.Contains(tempName))
{
// 判断此属性是否有Setter
if (!pi.CanWrite) continue; object value = dr[tempName];
if (value != DBNull.Value)
pi.SetValue(t, value, null);
}
}
ts.Add(t);
}
return ts;
}
}

实体转换辅助类

Excel接口导出,导入数据库(.Net)的更多相关文章

  1. atitit.sql server2008导出导入数据库大的表格文件... oracle mysql

    atitit.sql server2008导出导入数据库大的表格文件... 1. 超过80M的文件是不能在查询分析器中执行的 1 2. Oracle ,mysql大的文件导入 1 2.1. 使用sql ...

  2. Java实现Excel数据批量导入数据库

    Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...

  3. 将Excel中数据导入数据库(三)

    上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...

  4. 将Excel中数据导入数据库(二)

    在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...

  5. 将Excel中数据导入数据库(一)

    在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...

  6. mysql进阶(十三)命令行导出导入数据库

    MySQL命令行导出导入数据库 MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd D:\Program Files\ ...

  7. 第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原

    MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program ...

  8. MySQL可视化软件Work Bench导出导入数据库

    首先打开你的work bench,输入你的密码进入主页面 A:导入数据库 在Schemas空白处右键选择Create~:建立一个数据库,然后就可以导入你的sql文件了 File-->Open S ...

  9. mysql命令导出导入数据库

    命令导出数据库: mysqldump -h[主机所在IP] -u[用户名] -p [要导出的数据库]>[导出的路径//[文件名].sql] 命令导入数据库: 1>首先,我们应该在cmd中进 ...

  10. jsp上传excel文件并导入数据库

    1,excel文件的上传 需要借助jar包:commons-fileupload-1.2.1.jar以及commons-io-1.3.2.jar 前端的html文件 <form id=" ...

随机推荐

  1. 品Spring:负责bean定义注册的两个“排头兵”

    别看Spring现在玩的这么花,其实它的“筹码”就两个,“容器”和“bean定义”. 只有先把bean定义注册到容器里,后续的一切可能才有可能成为可能. 所以在进阶的路上如果要想走的顺畅些,彻底搞清楚 ...

  2. Cocos Creator实现左右跳游戏

    ​1. 玩法说明 游戏开始后,点击屏幕左右两侧,机器人朝左上方或右上方跳一步,如果下一步有石块,成功得1分,否则游戏结束. 2. 模块介绍 游戏场景分为2个:主页场景(home).游戏场景(game) ...

  3. asp.net core IdentityServer4 实现 implicit(隐式许可)实现第三方登录

    前言 OAuth 2.0默认四种授权模式(GrantType) 授权码模式(authorization_code) 简化模式(implicit) 密码模式(resource owner passwor ...

  4. ExcelDataReader read excel file

    上篇文章向大家介绍了用DocumentFormat.OpenXml.dll读取excel的方法,这里再向大家介绍一种轻量级简便的方法,用的是Excel.dll,及ICSharpCode.SharpZi ...

  5. Fresco添加HTTP请求头

    项目中用Fresco来管理图片由于服务器图片有不同的版本需要根据客户端的屏幕密度来选择不同的图片共享一份用OkHttp下载图片并添加HTTP头代码. public class OkHttpNetwor ...

  6. windows下配置多个tomcat步骤

    步骤如下: 1.使用压缩版的tomcat不能使用安装版的.2.第一个tomcat的配置不变.3.增加环境变量CATALINA_HOME2,值为新的tomcat的地址:增加环境变量CATALINA_BA ...

  7. linux mint 19.2与Windows 10 双系统硬盘安装与卸载

    安装linux mint 和win10双系统: 1.win10系统下如果没有空闲分区,请从容量较大的分区用partition manager在选中的较大的分区下,调整大小.此步骤最好在pe下的part ...

  8. spring5 源码深度解析----- 事务的回滚和提交(100%理解事务)

    上一篇文章讲解了获取事务,并且通过获取的connection设置只读.隔离级别等,这篇文章讲解剩下的事务的回滚和提交 回滚处理 之前已经完成了目标方法运行前的事务准备工作,而这些准备工作最大的目的无非 ...

  9. 网页布局——float浮动布局

    我的主要参考资料是[Object object]的文章 float 布局应该是目前各大网站用的最多的一种布局方式了,但是也特别复杂,这里详细讲一下 首先,什么是浮动? 浮动元素是脱离文档流的,但不脱离 ...

  10. 基于MQTT协议的云端proxy远程登陆

    这篇文件是建立在一下两篇文章基础上完成的 很多重复的内容不会在这章提到 https://www.cnblogs.com/y-c-y/p/11685405.html telnet协议相关 https:/ ...