关于.net程序中读取不规则的excle表格中的数据,并插入到数据库的方法
2016-09-13 14:34
681 查看
首页页面上要有一个提交按钮,当地及提交时,开始读取excle表格中的数据
protect void btnSubmit_Click(object sender,EventArgs e)
{
if(FileUploadMain.HasFile)//这一句是判断上传文件的控件里是否上传的有文件
{
bool fileOK=false;
string filepath = System.Web.HttpContext.Current.Request.MapPath("UploadFiles/") + returnTime() + FileUploadMain.FileName;//设置上传文件的保存到服务器路径
string fileExtension = System.IO.Path.GetExtension(FileUploadMain.PostedFile.FileName).ToLower();
//限定只能上传jpg和gif图片
string[] allowExtension = {".xlsx", ".xls" };
//对上传的文件的类型进行一个个匹对
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
{
fileOk = true;
break;
}
}
if (fileOk.Equals(false))
{
lblError.Text = "文件类型错误,请上传Excel文件";
}
else
{
try
{
FileUploadMain.SaveAs(filepath);
ReadApplyExcel(filepath);
}
catch (Exception ex)
{
this.lblError.Text = "上传失败:" + ex.Message.ToString();
}
}
}
else
{
this.lblError.Text = "请选择需要上传的申请单!";
}
}
}
private string returnTime()
{
string time = DateTime.Now.ToString();
time = Convert.ToDateTime(time).ToString("yyyyMMddhhmmss");
return time;
}
private void ReadApplyExcel(string path)
{
string connstring = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
using (OleDbConnection conn = new OleDbConnection(connstring))
{
conn.Open();
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字$
string firstSheetName = sheetsName.Rows[0][2].ToString();//得到第一个sheet的名字
string sql = string.Format("SELECT * FROM [{0}]", firstSheetName + "A:Z"); //查询字符串
OleDbDataAdapter ada = new OleDbDataAdapter(sql, connstring);
DataTable dt = new DataTable();
ada.Fill(dt);//当把excle中的数据读入到dt中时,就把数据读入到了规则的区域,可以通过VS断点调试,查看dtl里的内容,就可以用dt.Rows[行][列]即dt.Rows[3]["f6"]来读取自己所需的数据
path = path.Substring(path.LastIndexOf("UploadFiles"));
path = path.Replace("\\", "/");
#endregion
conn.Close();
}
}
protect void btnSubmit_Click(object sender,EventArgs e)
{
if(FileUploadMain.HasFile)//这一句是判断上传文件的控件里是否上传的有文件
{
bool fileOK=false;
string filepath = System.Web.HttpContext.Current.Request.MapPath("UploadFiles/") + returnTime() + FileUploadMain.FileName;//设置上传文件的保存到服务器路径
string fileExtension = System.IO.Path.GetExtension(FileUploadMain.PostedFile.FileName).ToLower();
//限定只能上传jpg和gif图片
string[] allowExtension = {".xlsx", ".xls" };
//对上传的文件的类型进行一个个匹对
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
{
fileOk = true;
break;
}
}
if (fileOk.Equals(false))
{
lblError.Text = "文件类型错误,请上传Excel文件";
}
else
{
try
{
FileUploadMain.SaveAs(filepath);
ReadApplyExcel(filepath);
}
catch (Exception ex)
{
this.lblError.Text = "上传失败:" + ex.Message.ToString();
}
}
}
else
{
this.lblError.Text = "请选择需要上传的申请单!";
}
}
}
private string returnTime()
{
string time = DateTime.Now.ToString();
time = Convert.ToDateTime(time).ToString("yyyyMMddhhmmss");
return time;
}
private void ReadApplyExcel(string path)
{
string connstring = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
using (OleDbConnection conn = new OleDbConnection(connstring))
{
conn.Open();
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字$
string firstSheetName = sheetsName.Rows[0][2].ToString();//得到第一个sheet的名字
string sql = string.Format("SELECT * FROM [{0}]", firstSheetName + "A:Z"); //查询字符串
OleDbDataAdapter ada = new OleDbDataAdapter(sql, connstring);
DataTable dt = new DataTable();
ada.Fill(dt);//当把excle中的数据读入到dt中时,就把数据读入到了规则的区域,可以通过VS断点调试,查看dtl里的内容,就可以用dt.Rows[行][列]即dt.Rows[3]["f6"]来读取自己所需的数据
path = path.Substring(path.LastIndexOf("UploadFiles"));
path = path.Replace("\\", "/");
#endregion
conn.Close();
}
}
相关文章推荐
- C#关于向数据库中插入数据时,有不规则自增列的处理方法
- .Net读取Excle数据写入到数据库
- POI读取excel2007文件的数据,插入数据库的使用方法【经验之谈】
- .Net读取Excle数据写入到数据库
- 关于数据库层面上锁,解决程序并发插入多条重复数据
- 从数据库中读取数据并写入到Excle电子表格之1
- 从数据库中读取数据并写入到Excle电子表格之2
- 从Excel 电子表格中读取数据并插入到数据库的简单方式
- 救火!各位大虾,怎样用JAVA程序读取excle文件或excle数据库,并插入到oracle数据库中,万分感谢
- php使用PDO事务配合表格读取大量数据插入操作实现方法
- 关于数据库层面上锁,解决程序并发插入多条重复数据
- 关于数据库中去掉数据空格的方法!!!
- 从数据库读取UI源数据自动化生成Windows 界面(.net环境中Windows开发的自动化界面系统构架研究 续一)
- 用C#编程从数据库中读取图片数据导进Excel文件的方法
- asp实现批量插入表单中的数据到数据库的方法
- asp实现批量插入表单中的数据到数据库的方法
- 关于文件保存到数据库及其读取的方法
- 关于ASP.NET中图片上传到MSSQL数据库以及读取的方法
- 要将一个数据库的所有表格使用批通信程序取出(BCP OUT),有何较快的方法?
- 关于使用sql删除数据库重复的数据的方法整理: