Execl数据上传到数据库

=============================================================asp.net========================================
num = Convert.ToInt32(ini.IniReadValue("Record", "Num").ToString());
num++;

Random random = new Random();
//保存文件的虚拟路径
string path = "UploadFile/";
//获取选择的文件名
string fileName = FileUpload1.FileName;
///文件名称判断
if (true)
{

}
//获取文件扩展名称
string fileExt = Path.GetExtension(fileName);
//生成新文件名
//string newName ="Mes"+ DateTime.Now.ToString("yyyyMMddHHmmssfff") + random.Next(0, 9999).ToString();

string NewName = "MES" + DateTime.Now.ToString("yyyyMMdd") + num.ToString();
ini.IniWriteValue("Record", "Num", num.ToString());

//获取指定虚机路径的物理路径
string fullPath = HttpContext.Current.Server.MapPath(path);
//上传文件保存路径
string savePath = fullPath + NewName + fileExt;
//保存文件到服务器
FileUpload1.SaveAs(savePath);

==================================================================Winform=================================================

/// <summary>
/// 浏览
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bn_MConfig_Click(object sender, EventArgs e)
{
this.openFileDialog1.Filter = "所有文件(*.*)|*.*";

if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
/*
string PicFileName = this.openFileDialog1.FileName;
this.imgList.Add(PicFileName);
this.imageList1.Images.Add(Image.FromFile(PicFileName));
*/
string FileName = this.openFileDialog1.FileName;
tb_file.Text = FileName;
}

}

/// <summary>
/// 文件上传
/// </summary>
/// <param name="openFileDialog"></param>
/// <param name="FileTypeName"></param>
public static void FileUp(OpenFileDialog openFileDialog, string FileTypeName)
{
try
{
//FileTypeName = "Models";
Random random = new Random();
//保存文件的虚拟路径
string path = "UploadFile//" + FileTypeName + "//";
//获取选择的文件名
string fileName = openFileDialog.FileName;
///文件名称判断
if (true)
{

}
//获取文件扩展名称
string fileExt = Path.GetExtension(fileName);
//生成新文件名
//string newName ="Mes"+ DateTime.Now.ToString("yyyyMMddHHmmssfff") + random.Next(0, 9999).ToString();
string NewName = FileTypeName + DateTime.Now.ToString("yyyyMMddHHmmssfff");
//获取指定虚机路径的物理路径
string fullPath = Path.GetDirectoryName(path);
fullPath = Path.GetFullPath(path);
//上传文件保存路径
string savePath = fullPath + NewName + fileExt;
//DBHelpter.MsgBox(savePath);
//保存文件到本地
File.Copy(fileName, savePath);
///获取execl数据
//返回指定目录中的文件的名称(绝对路径)
string[] files = System.IO.Directory.GetFiles(fullPath);
//获取Test文件夹下所有文件名称
string[] files2 = System.IO.Directory.GetFiles(@fullPath, "*", System.IO.SearchOption.AllDirectories);
////获取指定目录下面指定格式的所有文件
//DirectoryInfo di = new DirectoryInfo(@fullPath.TrimEnd(‘\\‘));
//FileInfo[] files1 = new string[] { "*.xlsx", "*.csv", "*.xls" }.SelectMany(i => di.GetFiles(i, SearchOption.AllDirectories)).Distinct().ToArray();
List<long> MESNO = new List<long>();
List<string> FilePathlist = GetFiles(new DirectoryInfo(fullPath), "*.xlsx,*.xls");
for (int i = 0; i < FilePathlist.Count(); i++)
{
string str = FilePathlist[i].Split(‘.‘)[0];
string[] sArray = str.Split(new string[] { FileTypeName }, StringSplitOptions.RemoveEmptyEntries);
long NO = Convert.ToInt64(sArray[2]);
MESNO.Add(NO);

}
long max = 0;
for (int i = 0; i < MESNO.Count(); i++)
{
max = MESNO[0];
if (MESNO[i] > max)
{
max = MESNO[i];
}
}
string LastFileName = fullPath + FileTypeName + max + fileExt;

FileSvr fileSvr = new FileSvr();
///有Office配置文件
//DataTable dt = fileSvr.GetExcelDatatable(LastFileName, "mapTable");
///引用NPIO
string msgstr = "";
DataSet ds = NPIOClass.ExcelToDataSet(LastFileName, msgstr);
string name = "";

for (int i = 0; i < ds.Tables.Count; i++)
{

name += ds.Tables[i].TableName + ",";

int num= InsertDatas(ds.Tables[i]);
if (num>0)
{
MessageBox.Show("上传成功!");

}
else
{
MessageBox.Show("上传失败!");
}
}

}
catch (Exception ex)
{

MessageBox.Show(ex.ToString());
}

}

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Physical_planning_system.UploadClass
{
public class NPIOClass
{

/// <summary>
/// Excel转换成DataTable(.xls)
/// </summary>
/// <param name="filePath">Excel文件路径</param>
/// <returns></returns>
public static DataTable ExcelToDataTable(string filePath)
{
var dt = new DataTable();
using (var file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
var hssfworkbook = new XSSFWorkbook(file);
var sheet = hssfworkbook.GetSheetAt(0);
for (var j = 0; j < 5; j++)
{
dt.Columns.Add(Convert.ToChar(((int)‘A‘) + j).ToString());
}
var rows = sheet.GetRowEnumerator();
while (rows.MoveNext())
{
var row = (HSSFRow)rows.Current;
var dr = dt.NewRow();
for (var i = 0; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
if (cell == null)
{
dr[i] = null;
}
else
{
switch (cell.CellType)
{
case CellType.Blank:
dr[i] = "[null]";
break;
case CellType.Boolean:
dr[i] = cell.BooleanCellValue;
break;
case CellType.Numeric:
dr[i] = cell.ToString();
break;
case CellType.String:
dr[i] = cell.StringCellValue;
break;
case CellType.Error:
dr[i] = cell.ErrorCellValue;
break;
case CellType.Formula:
try
{
dr[i] = cell.NumericCellValue;
}
catch
{
dr[i] = cell.StringCellValue;
}
break;
default:
dr[i] = "=" + cell.CellFormula;
break;
}
}
}
dt.Rows.Add(dr);
}
}
return dt;
}

/// <summary>
/// Excel转换成DataSet(.xlsx/.xls)
/// </summary>
/// <param name="filePath">Excel文件路径</param>
/// <param name="strMsg"></param>
/// <returns></returns>
public static DataSet ExcelToDataSet(string filePath, string strMsg)
{
strMsg = "";
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string fileType = Path.GetExtension(filePath).ToLower();
string fileName = Path.GetFileName(filePath).ToLower();
try
{
ISheet sheet = null;
int sheetNumber = 0;
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
if (fileType == ".xlsx")
{
// 2007版本
XSSFWorkbook workbook = new XSSFWorkbook(fs);
sheetNumber = workbook.NumberOfSheets;
for (int i = 0; i < sheetNumber; i++)
{
string sheetName = workbook.GetSheetName(i);
sheet = workbook.GetSheet(sheetName);
if (sheet != null)
{
dt = GetSheetDataTable(sheet, strMsg);
if (dt != null)
{
dt.TableName = sheetName.Trim();
ds.Tables.Add(dt);
}
else
{
//MessageBox.Show("Sheet数据获取失败,原因:" + strMsg);
}
}
}
}
else if (fileType == ".xls")
{
// 2003版本
HSSFWorkbook workbook = new HSSFWorkbook(fs);
sheetNumber = workbook.NumberOfSheets;
for (int i = 0; i < sheetNumber; i++)
{
string sheetName = workbook.GetSheetName(i);
sheet = workbook.GetSheet(sheetName);
if (sheet != null)
{
dt = GetSheetDataTable(sheet, strMsg);
if (dt != null)
{
dt.TableName = sheetName.Trim();
ds.Tables.Add(dt);
}
else
{
// MessageBox.Show("Sheet数据获取失败,原因:" + strMsg);
}
}
}
}
return ds;
}
catch (Exception ex)
{
strMsg = ex.Message;
return null;
}
}
/// <summary>
/// 获取sheet表对应的DataTable
/// </summary>
/// <param name="sheet">Excel工作表</param>
/// <param name="strMsg"></param>
/// <returns></returns>
private static DataTable GetSheetDataTable(ISheet sheet, string strMsg)
{
strMsg = "";
DataTable dt = new DataTable();
string sheetName = sheet.SheetName;
int startIndex = 0;// sheet.FirstRowNum;
int lastIndex = sheet.LastRowNum;
//最大列数
int cellCount = 0;
IRow maxRow = sheet.GetRow(0);
for (int i = startIndex; i <= lastIndex; i++)
{
IRow row = sheet.GetRow(i);
if (row != null && cellCount < row.LastCellNum)
{
cellCount = row.LastCellNum;
maxRow = row;
}
}
//列名设置
try
{
for (int i = 0; i < maxRow.LastCellNum; i++)//maxRow.FirstCellNum
{
//dt.Columns.Add(Convert.ToChar(((int)‘A‘) + i).ToString());

dt.Columns.Add(maxRow.Cells[i].ToString());

//DataColumn column = new DataColumn("Column" + (i + 1).ToString());
//dt.Columns.Add(column);
}
}
catch
{
strMsg = "工作表" + sheetName + "中无数据";
return null;
}
//数据填充
for (int i = startIndex + 1; i <= lastIndex; i++)
{
IRow row = sheet.GetRow(i);
DataRow drNew = dt.NewRow();
if (row != null)
{
for (int j = row.FirstCellNum; j < row.LastCellNum; ++j)
{
if (row.GetCell(j) != null)
{
ICell cell = row.GetCell(j);
switch (cell.CellType)
{
case CellType.Blank:
drNew[j] = "";
break;
case CellType.Numeric:
short format = cell.CellStyle.DataFormat;
//对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理
if (format == 14 || format == 31 || format == 57 || format == 58)
drNew[j] = cell.DateCellValue;
else
drNew[j] = cell.NumericCellValue;
if (cell.CellStyle.DataFormat == 177 || cell.CellStyle.DataFormat == 178 || cell.CellStyle.DataFormat == 188)
drNew[j] = cell.NumericCellValue.ToString("#0.00");
break;
case CellType.String:
drNew[j] = cell.StringCellValue;
break;
case CellType.Formula:
try
{
drNew[j] = cell.NumericCellValue;
if (cell.CellStyle.DataFormat == 177 || cell.CellStyle.DataFormat == 178 || cell.CellStyle.DataFormat == 188)
drNew[j] = cell.NumericCellValue.ToString("#0.00");
}
catch
{
try
{
drNew[j] = cell.StringCellValue;
}
catch { }
}
break;
default:
drNew[j] = cell.StringCellValue;
break;
}
}
}
}
dt.Rows.Add(drNew);
}
return dt;
}

}
}

/// <summary>
/// 获取某种类型文件
/// </summary>
/// <param name="directory"></param>
/// <param name="pattern"></param>
/// <returns></returns>
public static List<string> GetFiles(DirectoryInfo directory, string pattern)
{
List<string> Filelist = new List<string>();
if (directory.Exists || pattern.Trim() != string.Empty)
{
string[] ext = pattern.Split(‘,‘);

for (int i = 0; i < ext.Count(); i++)
{
foreach (FileInfo info in directory.GetFiles(ext[i]))
{
if (Filelist.Contains(info.FullName.ToString()))
{
continue;
}
Filelist.Add(info.FullName.ToString());
}
foreach (DirectoryInfo info in directory.GetDirectories())
{
GetFiles(info, pattern);
}
}

}
return Filelist;
}

原文地址:https://www.cnblogs.com/lantenglc/p/11743656.html

时间: 2024-10-12 12:20:47

Execl数据上传到数据库的相关文章

C#:将图片文件上传到数据库两种方法。

方法1: 将图片复制到指定文件夹,在数据库中存储图片路径,通过读取路径来显示图片. string str; private void toolStripButton1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { str = openFileDialog1.FileName; pictureBox1.Image = Image.FromFile(str); }

C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)

目       录 工业物联网和集成系统解决方案的技术路线... 1 前言... 1 第一章           系统架构... 3 1.1           硬件构架图... 3 1.2           组件构架图... 4 第二章           技术选型与介绍... 5 2.1           开发环境... 5 2.2           数据源... 5 2.3           数据采集... 5 2.4           数据上传服务... 6 2.5      

一个简单实际的Windows服务:实现本地数据上传到服务器

功能:实现本地数据上传到远程服务器 操作实现: 1.发送本地ID到远程服务器进行身份验证,验证成功则可Get到本地需要发送的数据的ID,例如: 本地发送身份ID:key123,验证成功,则远程服务器匹配到该ID所包含的数据条目,例如传回7个ExdID. 2.收到7个ExdID后,本地需要传输数据库中许多数据中的这7个ExdID所对应的数据到远程服务器,远程服务器将收到的数据保存.更新到远程数据库中. 注意问题: 1.为保证带宽负载轻松,不能频繁往远程服务器传输数据. 2.考虑到断网情况,断网之间

个人永久性免费-Excel催化剂功能第20波-Excel与Sqlserver零门槛交互-数据上传篇

Excel作为众多数据存储的交换介质,在不同的系统内的数据很少可以很连贯地进行整合分析,一般的业务系统都会提供导出Excel作为标配功能供用户使用系统内生成的数据. 此时最大的问题是,Excel很维去成为各个数据源的整合方,其数据存储能力和运算能力一直是众多深度Excel用户们一大头痛的事情,当数据量一大,做什么操作都会慢下来. 今天Excel催化剂将给大家带来全新的解决方案,Excel与Sqlserver深度集成,在Excel上的数据源能轻松上传至Sqlserver中,实现以Sqlserver

nodejs的数据上传与安全

Node提供了相对底层的API,通过它构建各种各样的Web应用都是相对容易的,但在Web应用中,不得不重视数据上传相关的安全问题.由于Node与前端Javascript的近缘性,前端Javascript甚至可以上传至服务器直接执行,但在这里我们并不讨论这样危险的动作,而是介绍内存和CSRF相关的安全问题. 1. 内存限制 在解析用户提交的表单.JSON和XML的时候,我们采取的策略是先保存所有数据,然后再解析处理,最后才传递给业务逻辑.这种策略存在潜在的问题是,它仅仅适合数据量小的提交请求, 一

【AllJoyn专题】基于AllJoyn和Yeelink的传感器数据上传与指令下行的研究

笔者接触高通物联网框架AllJoyn不太久,但确是被深深地吸引了.在我看来,促进我深入学习的原因有三点:一.AllJoyn开源,对开源的软硬件总会有种莫名的喜爱,尽管也许不会都深入下去:二.顺应潮流,物联网虽远未普及,但已是大势所趋,高通公司在领域布局,致力于打造舒适高效的智能家居场景,推出AllJoyn软件框架,适应了发展趋势:三.文档丰富,开源软件的使用,特别是框架,若没有文档相助,相信没有多少开发者愿意尝试,AllJoyn在这方面做得不错,日后还需做得更好.当然啦,也有些额外原因,包括高通

Chromium硬件加速渲染的GPU数据上传机制分析

在Chromium中,WebGL端.Render端和Browser端通过命令缓冲区将GPU命令发送给GPU进程执行.GPU命令携带的简单参数也通过命令缓冲区发送给GPU进程,但是复杂参数,例如纹理数据,有可能太大以致命令缓冲区无法容纳,因此需要通过其它机制传递给GPU进程.本文接下来就主要以纹理数据上传为例,分析WebGL端.Render端和Browser端将GPU命令数据传递给GPU进程的机制. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! WebGL

如何自学Struts2之Struts2文件上传和数据库访问[视频]

如何自学Struts2之Struts2文件上传和数据库访问[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 由于上次视频没有声音,所以在这节课"Struts2数据库访问"一起再讲一下.

C#数据上传方法

/// <summary> /// 连接成功后开始调用数据上传程序 /// </summary> public void CallDataUpload() { //指定上传日期后,只上传指定日期的数据 //取指定的上传日期 string defineScrq = GetDefineScrq(); if (defineScrq != "") { scrq = Convert.ToDateTime(defineScrq); CreateUploadFile(); r