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 ...
随机推荐
- Linux系统调优——CPU(一)
(1).系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况: CPU -> MEM -& ...
- 如何在Windows Server 2008 R2中更改桌面图标
如何在Windows Server 2008 R2中更改桌面图标 Windows Server 2008 R2 已经在 MSDN 和 TechNet Plus 订阅上公布,gOxiA 在第一时间下载并 ...
- NGUI无法显示
早上起来发现 ,NGUI无法显示,后来发现是场景Camera的 depth =0 : 要设置depth=-1. 原来相机之间也有渲染层级
- JS Maximum call stack size exceeded
一.问题描述 Maximum call stack size exceeded 翻译为:超过最大调用堆栈大小 二.效果截图 三.问题解决方案 出现该问题,说明程序出现了死循环了.所以要去检查出错的程 ...
- Appium移动自动化测试-----(六)1.appium-desktop下载安装
Appium 移动测试中有个很重新的组件 Appium-Server,它主要用来监听我们的移动设备(真机或模拟器),然将不同编程语言编写的 appium 测试脚本进行解析,然后,驱动移动设备来运行测试 ...
- STL常用
nth_element(first,nth,last) first,last 第一个和最后一个迭代器,也可以直接用数组的位置. 将第n个大的元素放到nth位置上,左边元素都小于它,右边元素都大于它. ...
- LeetCode 53. 最大子序和(Maximum Subarray)
53. 最大子序和 53. Maximum Subarray 题目描述 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. LeetCode53. M ...
- [转帖]深度分析HBase架构
深度分析HBase架构 https://zhuanlan.zhihu.com/p/30414252 原文链接(https://mapr.com/blog/in-depth-look-hbase-a ...
- [.Net Core] - 使用 NLog 记录日志到 Sql Server
1. 使用 Nuget 安装 NLog. 2. 在 Sql Server 中创建 NLog 数据表. CREATE TABLE [dbo].[NLogInfo]( ,) NOT NULL, [Date ...
- EFCore 调试远程SqlServer数据库提示信号灯超时时间已到
背景 最近在使用EFCore去连接阿里云上面的数据库进行开发的时候,当自己在Debug模式下总是提示下面的报错信息,然后找了好久都没有解决,报错信息如下: an exception has been ...