Excel导入+写入数据库
1.引用服务
2.前端
这里是上传Excel功能页面
<div>
<form action="/Improve_Excel/get_Excel" method="post" enctype="multipart/form-data">//上传文件必须要设置enctype="multipart/form-data"!!!
<input type="file" id="" name="file" value="上传文件" />
<br />
<br />
<input type="submit" id="" name="" value="上传文件按钮" />
</form>
</div>
3.后端
using Aspose.Cells;
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Web;
using System.Web.Mvc;
namespace JJQ_Practice.Controllers
{
public class Improve_ExcelController : Controller
{
// GET: Improve_Excel
public ActionResult Index()
{
return View();
}
public ActionResult get_Excel()
{
/////////////////////////////////////////////////////////////////
//上传并保存文件
HttpPostedFileBase file = Request.Files["file"];
if (file == null || file.ContentLength <= 0)
{
return Content("请选择文件!");
}
Stream streamfile = file.InputStream;
string FinName = Path.GetExtension(file.FileName);//得到文件后缀名
if (FinName != ".xls" && FinName != ".xlsx")
{
return Content("只能上传Excel文档");
}
string file_path = Server.MapPath("file_centre");
var GUID = Guid.NewGuid();
if (!Directory.Exists(file_path))
{
Directory.CreateDirectory(file_path);
}
var file_Path_Url = Path.Combine(file_path, Path.GetFileName(file.FileName));
file.SaveAs(file_Path_Url);//上传后保存文件
////////////////////////////////////////////////////////////////
var dt = GetExcelData(file_Path_Url, 0);//得到第1个sheet表;index=0,1,2,3,...
Workbook book = new Workbook(file_Path_Url);
var all_sheet_Count = book.Worksheets.Count;//得到execl表中有几个sheet表,数量;;为以后(本实例中没有去实现)一execl多表写入做for循环准备
//!!!!!!!声明数据库中对应的表的表名;dbo.libraya表!!!!!!!重要!!!!!
var table1 = "aa";//!!!!!!!声明数据库中对应的表的表名(就是数据库中已经有的表,没有数据的表);dbo.aa表!!!!!!!重要!!!!!
BatchInsertBySqlBulkCopy(dt, table1);
return Content("写入成功!");
}
public static void BatchInsertBySqlBulkCopy(DataTable dt, string tableName)
{
var connString = "Data Source=*******;Initial Catalog=*******;User ID=*******;Password=*******;Min Pool Size=10;Max Pool Size=255;Connect Timeout=30";
using (SqlBulkCopy sbc = new SqlBulkCopy(connString))
{
sbc.BatchSize = dt.Rows.Count;
sbc.BulkCopyTimeout = 10;
sbc.DestinationTableName = tableName;
for (int i = 0; i < dt.Columns.Count; i++)
{
sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, i);
}
//将dt表中的数据全部写入数据库中对应名为tableName的表中
sbc.WriteToServer(dt);
}
}
#region Excel组件:读取服务器端文件(配合导入用)
public DataTable GetExcelData(string strSysUrl, int pageInfo)
{
try
{
//解析插入数据库
Workbook book = new Workbook(strSysUrl);
Worksheet sheet = book.Worksheets[pageInfo];
Cells cells = sheet.Cells;
var num = book.Worksheets.Count;
//提取excel数据 转换为DataTable
DataTable dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, true);
return dt;
}
catch (Exception ex)
{
return null;
}
}
#endregion
}
}
Excel导入+写入数据库的更多相关文章
- Excel 读取写入数据库
// Excel 读取写入数据库 // 3.8版本的poi 4.0 可以不用写 parseCell 这个方法,可以直接赋值 STRING 类型 import org.apache.poi.hss ...
- 用Excel导入Oracle数据库plsql
打开plsql之后,在工具栏点击[tools]--[ODBC Imoprter] 选择导入文件的类型,这里是excel文件,所以选择Excel Files 输入连接数据库的用户名和密码 点击Conne ...
- Excel—— [导入到数据库] or 将数据 [导入到Excel]
将Excel导入到数据库实现如下: 前台代码: @model IEnumerable<Model.Student> @{ Layout = null; } <!DOCTYPE htm ...
- excel导入到数据库的异常处理
excel导入到数据库,这个是经常发生的,今天就碰到了一个非常郁闷的事情,在导入到oracle数据的时候,总是出现ORA-01756: 引号内的字符串没有正确结束,认真的排插了数据当中可能出现的错误, ...
- excel导入mssql数据库,支持excel2003--2010文件格式
rt,简单的excel导入mssql.未做性能及海量数据优化,一般单表5000左右条数据导入适用. 源码非原创,来源于之前搜集整理,原作者无从考究,如有版权问题请留言注明. 看代码.前台页面是一个Fi ...
- 如何将excel导入到数据库中并在gridview中显示
在页面上导入个excel文件,将该excel中的数据导入到数据库中,并且在页面的gridview中把数据显示出来. .在Asp.net中怎样将Excel文件中的数据导入到GridView中呢? 首先我 ...
- xlrd(excel导入mysql数据库)
一.xlrd模块: python 对 excel 文件进行读操作 1.下载xlrd 并安装 http://pypi.python.org/pypi/xlrd wget https://pypi.pyt ...
- NPOI把Excel导入到数据库
二,把Excel中的数据导入到数据库的具体步骤: protected void Button1_Click(object sender, EventArgs e) { ...
- PHP把excel导入mysql数据库最常用的方法
Posted on 2011-03-25 09:16 PHP博客 阅读(1316) 评论(0) 编辑 收藏 引用 网摘 PHP把excel(xls)文件导入mysql数据库最常用的方法就是先把xls ...
随机推荐
- Siamese Net
参考博客:https://blog.csdn.net/ybdesire/article/details/84072339
- Redis的特性及运用
Redis特性 一个产品的使用场景肯定是需要根据产品的特性,先列举一下Redis的特点: 读写性能优异 持久化 数据类型丰富 单线程 数据自动过期 发布订阅 分布式 这里我们通过几个场景,不同维度说下 ...
- web端自动化——Selenium Grid原理
利用Selenium Grid可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行. 对不同的节点来说,可以搭建不同的测试环境(操作系统.浏 ...
- Django:将后台返回的数据填充到select下拉框中
select选择框如下: <select data-placeholder="选择项目..." class="form-control" name=&qu ...
- 【网络开发】UDP组播接收端解析
UDP组播接收端解析 网络中的一台主机如果希望能够接收到来自网络中其它主机发往某一个组播组的数据报,那么这么主机必须先加入该组播组,然后就可以从组地址接收数据包.在广域网中,还涉及到路由器支持组播路由 ...
- android基础---->Parcelable的使用
android中Parcelable序列化的使用,简单的记录一下. 目录导航: Serializable在android中的使用 Parcelable在android中的使用 Serializabl ...
- Flask 数据库连接
Flask拥有丰富的扩展组件,数据库管理方面Flask-SQLAlchemy简化了数据库管理的操作.SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台.其不但提供了高层ORM,而且 ...
- QT 源码分析--1
Ref: http://blog.sina.com.cn/s/blog_6e80f1390100qoc0.html 安装qt之后(我使用的是online自动安装),安装目录下有\5.10.1\Src\ ...
- [转帖]Apache Kylin 概述
Apache Kylin 概述 https://www.cnblogs.com/xiaodf/p/11671095.html 1 Kylin是什么 今天,随着移动互联网.物联网.AI等技术的快速兴起, ...
- ASP.NET请求过程-从源码角度研究MVC路由、Handler、控制器
路由常用对象 RouteBase 用作表示 ASP.NET 路由的所有类的基类. 就是路由的一个基础抽象类. // // 摘要: // 用作表示 ASP.NET 路由的所有类的基类. [ ...