c# excel文档导入及excel存储数据库
1.前端代码
- 本例使用初始MVC代码结构讲解excel文档的上传及保存至数据库操作
- 下面为前端代码
- 实现效果如图
<form id="formfile" enctype="multipart/form-data" style="float:left">
<span id="spFileUpload">
<!--选择文件-->
<button type="button" id="btnxuanze" class="btn btn-xs btn-info" οnclick="uploadClick()"><i class=""></i>选择文件</button>
<!--文件名-->
@Html.TextBox("f_fileName", "", new { @class = "input-middle" })
<input type="file" name="fileField" class="files" id="fileField" style="opacity:0;display:none" size="28" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
<button type="button" class="btn btn-xs btn-success" οnclick="uploadfile()">上传</button>
</span>
</form>
2.后台代码
- 为了方便演示,设计excel格式数据,如下图
- 同时设计数据库,与excel对应字段 (以上均为方便演示)
- 注意表列名与字段名转换对应关系
--数据库建表脚本
use CourseManageDB --修改成自己本地数据库
goif exists (select * from sysobjects where name= 't_externalPay')
drop table t_externalPay
gocreate table t_externalPay
(
f_bankCode varchar(50),
f_province varchar(50),
f_city varchar(50),
f_bankOther varchar(50),
f_remittanceAccount varchar(50),
f_adminName varchar(50),
f_money decimal(8,2),
f_order int
)
go
//后台程序处理上传excel并存至sqlserver代码
public ActionResult ExcelToDataTable()
{
IWorkbook workbook = null;
ISheet sheet = null;
DataTable table = new DataTable();
var fileData = Request.Files["myfirstField"];
workbook = WorkbookFactory.Create(fileData.InputStream);
//文件名称,带时间,方便日后导出数据时,根据条件查询
var fileName = fileData.FileName.ToString().Split('.')[0] + " " + DateTime.Now.ToString("HHmmss") + ".xls";var cellstyle = workbook.CreateCellStyle();
var hssfDataFormat = workbook.CreateDataFormat();
cellstyle.DataFormat = hssfDataFormat.GetFormat("@");Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("银行", "f_bankCode");
dictionary.Add("省份", "f_province");
dictionary.Add("城市", "f_city");
dictionary.Add("分行", "f_bankOther");
dictionary.Add("账号", "f_remittanceAccount");
dictionary.Add("姓名", "f_adminName");
dictionary.Add("金额", "f_money");
dictionary.Add("人员代号", "f_order");if (workbook != null)
{
sheet = workbook.GetSheetAt(0);
int rowCount = sheet.LastRowNum + 1;//总行数=内容总数+列头
IRow headerRow = sheet.GetRow(0); //首行
int cellCount = headerRow.LastCellNum; //一行最后一个方格的编号为 总列数
//表头数据
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(dictionary.Where(w=>w.Key == headerRow.GetCell(i).StringCellValue).Select(w=>w.Value).FirstOrDefault());
table.Columns.Add(column);
}
//读取列数据
for (int i = 1; i < rowCount; i++)
{
IRow rows = sheet.GetRow(i);
if (rows != null && rows.GetCell(0) != null && rows.GetCell(0).StringCellValue != null)
{
//创建与表格相同结构的新行
DataRow datarow = table.NewRow();
for (int j = rows.FirstCellNum; j < cellCount; j++)
{
if (rows.GetCell(j) != null && rows.GetCell(j).ToString() != "")
{
//给表每行数据赋值
datarow[j] = rows.GetCell(j).ToString();
}
}
table.Rows.Add(datarow);
}
}
}//连接数据库,准备写入
string conn = ConfigurationManager.ConnectionStrings["conn_mydb"].ToString();
SqlConnection connection = new SqlConnection(conn);if (connection.State == ConnectionState.Closed)
{
connection.Open();
}using (SqlTransaction transaction = (SqlTransaction)connection.BeginTransaction())
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, transaction))
{
sqlBulkCopy.DestinationTableName = "t_externalPay";
for (int i = 0; i < table.Columns.Count; i++)
{
sqlBulkCopy.ColumnMappings.Add(table.Columns[i].ColumnName, table.Columns[i].ColumnName);
}
sqlBulkCopy.BatchSize = table.Rows.Count;
try
{
sqlBulkCopy.WriteToServer(table);
transaction.Commit();
}
catch (Exception)
{
transaction.Rollback();
throw;
}
}
}return View("Contact");
}
3.总结
初学编程万事开头难,只要用心你也可以.
c# excel文档导入及excel存储数据库相关推荐
- 将excel导入到页面表格_如何将Excel文档导入Google表格
将excel导入到页面表格 Did someone send you an Excel document, but you don't have Excel? Giving up on Microso ...
- Mac OS X将CSV格式转换为Excel文档格式,Excel转CSV中文乱码问题
一:在Mac上假设你使用Excel打开windows导出的CSV格式文档.你会发现表格中全部的的内容都显示在A列. 那么,怎样恢复正常呢,你能够将CSV格式的文档导入到Excel文档中,这样就正常显示 ...
- excel 文档管理服务器,Excel Server Tutorial
在企事业单位的实际业务中所需要使用的信息,除了数据之外,还包括文档.文档是各种类别和格式的,它们可能是Word文件,如企业的规章制度:可能是AutoCAD文件,如产品设计图纸:也可能是视频.音频文件, ...
- excel文档查询服务器,excel服务器数据库查询语句
excel服务器数据库查询语句 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...
- 服务器导出excel文档,服务器导出excel功能配置
服务器导出excel功能配置 内容精选 换一换 该任务指导用户完成Linux云服务器的相关配置与其他驱动的安装,为最终生成的Linux裸金属服务器私有镜像做准备.配置Linux云服务器.具体操作请参考 ...
- SQL语句——将Excel文档导入数据表中
INSERT game_riddles_content(content) SELECT * FROM OPENROWSET('Microsoft.JET.O ...
- java修改另存excel_Word文档导入Excel总变形,调整格式你花了1小时,同事三步就搞定...
在进行文档编辑的时候我们都会用到Word,利用Word完成文档简历的编辑后,为方便文档的管理我们会把对应的简历文档复制粘贴到Excel当中.但是每次将Word内容直接复制到表格中后,我们都需要进行格式 ...
- Java web--利用java操作excel文档
在web应用程序的开发中,如果需要将Excel文档中的信息导入数据库或将数据库的信息导出到Excel文档中,需要应用程序访问Excel文件.目前,操作Excel文档的java组件主要有Jxl和POI两 ...
- ARCGIS导入XY坐标的EXCEL文档,出现无法选择X和Y字段的问题
近日用ARCGIS导入具有XY坐标的EXCEL文档时出现了无法选择X和Y字段的问题.像下图这样,在x field栏出现的字段应该是Excel文件中的x,但这个字段却没有出现. 最后发现是excel中数 ...
最新文章
- 开发健壮的企业级应用的研究
- jmeter获取mysql数据并作为请求参数使用
- [异步、tensorflow] - 子线程操作tensor,主线程处理tensor
- 有一个会泰勒级数的八岁表妹是怎样一种体验?
- 华为触摸提示音怎么换_抖音苹果iPhone手机怎么改微信消息提示音 自定义换声音教程...
- iPhone 13 Pro系列被抢疯:官网已推迟36天发货
- Linux系统内存管理实验报告,Linux 内存管理 综合实验报告.pdf
- android 文本分页显示,Android查看带有列表视图的分页器并动态添加文本
- Redis(三)源source编译
- Oracle约束的使用
- 跨时钟域处理所用到的同步器
- access里的多步oledb错误_access数据库常见问题处理
- 涨姿势 , JavaScript 玩转多线程编程~
- 暑假假期训练总结-3
- 蕃茄工作法 - 让你轻松应对繁忙的工作
- 百度步行导航加poi搜索android,Android Studio百度地图路线规划以及POI搜索功能的实现...
- PDF怎么编辑修改内容?分享两种编辑修改方法
- Nginx基本使用方法
- Ubuntu16.04调整屏幕分辨率至1920*1080
- 基于主成分分析PCA的人脸识别