excel开发,从access数据库中提取数据
我想对excel进行二次开发,excel的某一列的内容既能从Access数据库中提取,也能手动编辑输入。有做过的给个思路吗?被人没有做过excel二次开发项目,只是知道能...
我想对excel进行二次开发,excel的某一列的内容既能从Access数据库中提取,也能手动编辑输入。有做过的给个思路吗?
被人没有做过excel二次开发项目,只是知道能开发,需要详细的解说,先在此谢谢。 展开
被人没有做过excel二次开发项目,只是知道能开发,需要详细的解说,先在此谢谢。 展开
3个回答
推荐于2016-10-04
展开全部
在应用过程中,可以把Access数据库当作SQL Server看待,这里给你提供一个我程序中用到的excel上传到sql server的步骤代码:(操作Excel,Access用OleDB)
----------------------------------------------------
第一步将excel文件上传到服务器,并返回文件名和目录 待读取数据
/// <summary>
/// 将excel文件上传到服务器,并返回存放路径和文昌巧件名
/// </summary>
/// <returns></returns>
public String UpLoadFile()
{
String onlyFileName = this.FileUpload1.FileName;
String pathFileName = this.FileUpload1.PostedFile.FileName;
int length = this.FileUpload1.PostedFile.ContentLength;
String fileType = this.FileUpload1.PostedFile.ContentType;
if (length == 0)
{
Response.Write("<script>alert('不是有效的Excel文件');</script>");
return "";
}
//上传EXCEL文件到ExcelFile目录
string NewFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
string filePath = Request.PhysicalApplicationPath + "Reports\\Template\\TempFile\\" + NewFileName;
this.FileUpload1.SaveAs(filePath);
return filePath;
}
第二步根据路径,获取该excel的所有sheet名称:
/// <summary>
/// 获得Excel中的所有sheetname。
/// </summary>
/// <param name="filepath"></param>
/// <returns></returns>
public ArrayList ExcelSheetName(string filepath)
{
ArrayList al = new ArrayList();
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2]);
}
return al;
}
第三步根据路径和sheet名称,获取数据到dataset中,
/// <summary>
/// //该方法实现从Excel中导出数据到DataSet中,其中filepath为姿迅薯Excel文件的绝对路迹者径,sheetname为表示那个Excel表;
/// </summary>
/// <param name="filepath"></param>
/// <param name="sheetname"></param>
/// <returns></returns>
public DataSet ExcelDataSource(string filepath, string sheetname)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
return ds;
}
第四步,将dataset中的数据保存到sql数据库中,此步骤略。
调用测试:
protected void Button2_Click(object sender, EventArgs e)
{
try
{
String filepath = UpLoadFile();
ArrayList arr = ExcelSheetName(filepath);
if (arr == null || arr.Count == 0) return;
DataSet ds = ExcelDataSource(filepath, arr[0].ToString());
this.gv.DataSource = ds;//gridview显示
this.gv.DataBind();
}
catch(Exception err)
{
throw new Exception(err.Message);
}
}
----------------------------------------------------
第一步将excel文件上传到服务器,并返回文件名和目录 待读取数据
/// <summary>
/// 将excel文件上传到服务器,并返回存放路径和文昌巧件名
/// </summary>
/// <returns></returns>
public String UpLoadFile()
{
String onlyFileName = this.FileUpload1.FileName;
String pathFileName = this.FileUpload1.PostedFile.FileName;
int length = this.FileUpload1.PostedFile.ContentLength;
String fileType = this.FileUpload1.PostedFile.ContentType;
if (length == 0)
{
Response.Write("<script>alert('不是有效的Excel文件');</script>");
return "";
}
//上传EXCEL文件到ExcelFile目录
string NewFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
string filePath = Request.PhysicalApplicationPath + "Reports\\Template\\TempFile\\" + NewFileName;
this.FileUpload1.SaveAs(filePath);
return filePath;
}
第二步根据路径,获取该excel的所有sheet名称:
/// <summary>
/// 获得Excel中的所有sheetname。
/// </summary>
/// <param name="filepath"></param>
/// <returns></returns>
public ArrayList ExcelSheetName(string filepath)
{
ArrayList al = new ArrayList();
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2]);
}
return al;
}
第三步根据路径和sheet名称,获取数据到dataset中,
/// <summary>
/// //该方法实现从Excel中导出数据到DataSet中,其中filepath为姿迅薯Excel文件的绝对路迹者径,sheetname为表示那个Excel表;
/// </summary>
/// <param name="filepath"></param>
/// <param name="sheetname"></param>
/// <returns></returns>
public DataSet ExcelDataSource(string filepath, string sheetname)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
return ds;
}
第四步,将dataset中的数据保存到sql数据库中,此步骤略。
调用测试:
protected void Button2_Click(object sender, EventArgs e)
{
try
{
String filepath = UpLoadFile();
ArrayList arr = ExcelSheetName(filepath);
if (arr == null || arr.Count == 0) return;
DataSet ds = ExcelDataSource(filepath, arr[0].ToString());
this.gv.DataSource = ds;//gridview显示
this.gv.DataBind();
}
catch(Exception err)
{
throw new Exception(err.Message);
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
excel 提取access数据 代码提供
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |