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导入+写入数据库的更多相关文章

  1. Excel 读取写入数据库

    // Excel 读取写入数据库 // 3.8版本的poi  4.0 可以不用写  parseCell  这个方法,可以直接赋值 STRING 类型 import org.apache.poi.hss ...

  2. 用Excel导入Oracle数据库plsql

    打开plsql之后,在工具栏点击[tools]--[ODBC Imoprter] 选择导入文件的类型,这里是excel文件,所以选择Excel Files 输入连接数据库的用户名和密码 点击Conne ...

  3. Excel—— [导入到数据库] or 将数据 [导入到Excel]

    将Excel导入到数据库实现如下: 前台代码: @model IEnumerable<Model.Student> @{ Layout = null; } <!DOCTYPE htm ...

  4. excel导入到数据库的异常处理

    excel导入到数据库,这个是经常发生的,今天就碰到了一个非常郁闷的事情,在导入到oracle数据的时候,总是出现ORA-01756: 引号内的字符串没有正确结束,认真的排插了数据当中可能出现的错误, ...

  5. excel导入mssql数据库,支持excel2003--2010文件格式

    rt,简单的excel导入mssql.未做性能及海量数据优化,一般单表5000左右条数据导入适用. 源码非原创,来源于之前搜集整理,原作者无从考究,如有版权问题请留言注明. 看代码.前台页面是一个Fi ...

  6. 如何将excel导入到数据库中并在gridview中显示

    在页面上导入个excel文件,将该excel中的数据导入到数据库中,并且在页面的gridview中把数据显示出来. .在Asp.net中怎样将Excel文件中的数据导入到GridView中呢? 首先我 ...

  7. xlrd(excel导入mysql数据库)

    一.xlrd模块: python 对 excel 文件进行读操作 1.下载xlrd 并安装 http://pypi.python.org/pypi/xlrd wget https://pypi.pyt ...

  8. NPOI把Excel导入到数据库

    二,把Excel中的数据导入到数据库的具体步骤: protected void Button1_Click(object sender, EventArgs e)        {           ...

  9. PHP把excel导入mysql数据库最常用的方法

    Posted on 2011-03-25 09:16 PHP博客 阅读(1316) 评论(0)  编辑 收藏 引用 网摘 PHP把excel(xls)文件导入mysql数据库最常用的方法就是先把xls ...

随机推荐

  1. 【431】Prim 算法 & Kruskal 算法

    Prim 算法: Minimum Spanning Tree(MST):最小生成树,就是连接所有节点的最小权值 mst集合与rest集合 mst集合中顶点,找到一条最小权值的边 然后把边相关的顶点,选 ...

  2. iOS textFiledView,label自适应高度

    CGSize constraintSize; constraintSize.width = 320; constraintSize.height = MAXFLOAT; CGSize sizeFram ...

  3. 报错:java.lang.ClassNotFoundException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

    1.创建mysql_link的时候一定要注意是不是多加了空格: 2.检查Sqoop是否引入了jdbc的jar包.

  4. SQL优化————Insert

    1.如果是非生产环境,可以先将索引和约束删掉,等数据插入完之后,再建立索引和约束. 2.如果一次性插入数据较大,可以使用游标,每次小批量的插入数据. 3.如果数据表太大,可以构建历史表,老数据通常不会 ...

  5. JVM(一) 内存结构

    JVM内存结构 方法区(JDK8以上叫元空间)和堆为线程共享区,虚拟机栈.本地方法栈及程序计数器为线程独占区,  还有一个没有在下图中体现的叫做直接内存(Direct Memory),不受JVM GC ...

  6. LeetCode 590. N叉树的后序遍历(N-ary Tree Postorder Traversal)

    590. N叉树的后序遍历 590. N-ary Tree Postorder Traversal 题目描述 给定一个 N 叉树,返回其节点值的后序遍历. LeetCode590. N-ary Tre ...

  7. [Visual Studio] - 使用 Fiddler 时,禁止监控 VSHub 请求的方法

    背景 VS + Fiddler 调试 WebAPI,监控请求包含大量 VSHub Request.http://localhost:49161/vshub/bb195f2e0d5c4765b9411f ...

  8. Fiddler使其在HttpURLConnection下正常抓包

    像陌陌这样使用HttpURLConnection进行通讯的APP还是无能为力 还需要对fiddler进行如下设置: 点击"Rules->CustomizeRules"; 在这 ...

  9. (二)spring初次遇见shiro

    文章目录 集成 Spring 集成中的坑 shiroFilter 的工作原理 权限配置细节 集成 Spring pom.xml 添加shiro相关的依赖 我使用的版本是 ${version.shiro ...

  10. pip install 遇到的问题

    执行pip命令时遇到 Fatal error in launcher: Unable to create process using '"'   电脑同时安装了python-2.7.13跟p ...