谁有把数据库里的数据通过EXCEL和文本文件进行上传下载例子,急

kinlin 2012-02-13 09:28:13
EXCEL上传( 把EXCEL里的数据上传到WEB服务器然后倒入DB中)
文本文件上传( 把文本文件里的数据上传到WEB服务器然后倒入DB中)

EXCEL下载( 把DB里的数据通过EXCEL下载到本地)
文本文件下载( 把DB里的数据通过文本文件下载到本地)

哪位大哥有啊,本人愿出200分求以上例子
或者发到我邮箱 kinlin927@163.com

asp.net + VB.net 或 asp.net + C#.net 都行
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MSDNXGH 2012-02-13
  • 打赏
  • 举报
回复
先从数据库读取写入EXECL,然后导出来

先上传EXECL,读取数取然后写入数据库

不能直接从数据库导出EXECL,或者EXECL直接写入数据库的
段传涛 2012-02-13
  • 打赏
  • 举报
回复
思路:先上传XLS文件,然后用OleDB连接Excel文件,将Excel数据导入Dataset,再将Dataset数据导入数据库。
以下是主调入过程


string filename = string.Empty;
try
{
filename = UpdateXls(this.FileExcel);//上传XLS文件
ImportXlsToData(filename);//将XLS文件内容导入
//删除文件
if (filename != string.Empty && File.Exists(filename))
{
File.Delete(filename);//删除上传的文件
}
}
catch(Exception ex)
{
this.WriteErrorXML(ex);//出错处理
this.lblMessage.Text = ex.Message;//错误显示
}
finally
{
//重新加载页面
LoadData();
}
以下是各个主要的函数。
其中ImportXlsToData是使用OleDb链接Excel文件并将其数据导入Dataset中;
UpdateXls是上传Xls文件(其实应该写成UpLoadXls......-_-!);
AddDatasetToSQL是将Dataset导入数据库,其中Save函数是插入一行记录(这里没有给出该函数)。

/**//// <summary>
/// 从Excel提取数据--》Dataset
/// </summary>
/// <param name="filename">Excel文件路径名</param>
private void ImportXlsToData(string fileName)
{
try
{
if (fileName == string.Empty)
{
throw new ArgumentNullException("上传文件失败!");
}
//
string oleDBConnString = String.Empty;
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "Data Source=";
oleDBConnString += fileName;
oleDBConnString += ";Extended Properties=Excel 8.0;";
//
OleDbConnection oleDBConn = null;
OleDbDataAdapter oleAdMaster = null;
DataTable m_tableName=new DataTable();
DataSet ds=new DataSet();

oleDBConn = new OleDbConnection(oleDBConnString);
oleDBConn.Open();
m_tableName=oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);

if (m_tableName != null && m_tableName.Rows.Count > 0)
{

m_tableName.TableName =m_tableName.Rows[0]["TABLE_NAME"].ToString();

}
string sqlMaster;
sqlMaster=" SELECT * FROM ["+m_tableName.TableName+"]";
oleAdMaster=new OleDbDataAdapter(sqlMaster,oleDBConn);
oleAdMaster.Fill(ds,"m_tableName");
oleAdMaster.Dispose();
oleDBConn.Close();
oleDBConn.Dispose();

//测试是否提取数据
//this.Datagrid1.DataSource = ds.Tables["m_tableName"];
//this.Datagrid1.DataBind();
//将Dataset中数据导入SQL
AddDatasetToSQL(ds);

}
catch(Exception ex)
{
throw ex;
}
}

//上传Excel文件
private string UpdateXls(System.Web.UI.HtmlControls.HtmlInputFile inputfile)
{
string orifilename = string.Empty;
string uploadfilepath = string.Empty;
string modifyfilename = string.Empty;
string fileExtend = "" ;//文件扩展名
int fileSize = 0;//文件大小
try
{
if(inputfile.Value != string.Empty)
{
//得到文件的大小
fileSize = inputfile.PostedFile.ContentLength;
if(fileSize == 0 )
{
throw new Exception("找不到该文件!");
}
//得到扩展名
fileExtend = inputfile.Value.Substring(inputfile.Value.LastIndexOf(".")+1);
if(fileExtend.ToLower() != "xls")
{
throw new Exception("请确认您所导入的文件是否EXCEL文件!!");
}
//路径
uploadfilepath = System.Web.HttpContext.Current.Server.MapPath(".")+path;
//新文件名
modifyfilename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
+ DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString()
+ DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString()
+ DateTime.Now.Millisecond.ToString();
modifyfilename += "."+inputfile.Value.Substring(inputfile.Value.LastIndexOf(".")+1);
//判断是否有该目录
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(uploadfilepath);
if (!dir.Exists)
{
dir.Create();
}
orifilename = uploadfilepath+modifyfilename;
//如果存在,删除文件
if(File.Exists(orifilename))
{
File.Delete(orifilename);
}
// 上传文件
inputfile.PostedFile.SaveAs(orifilename);
}
else
{
throw new Exception("没有选择Excel文件!");
}
}
catch(Exception ex)
{
throw ex;
}
return orifilename;
}

//将Dataset的内容导入SQL
private bool AddDatasetToSQL(DataSet pds)
{
int ic,ir;
ic = pds.Tables[0].Columns.Count;
if (pds.Tables[0].Columns.Count < 7)
{
throw new Exception("导入Excel格式错误!Excel只有" + ic.ToString() + "列");
}
ir = pds.Tables[0].Rows.Count;
if (pds != null && pds.Tables[0].Rows.Count > 0)
{
for (int i = 0;i < pds.Tables[0].Rows.Count;i++)
{
Save(pds.Tables[0].Rows[i][0].ToString(),pds.Tables[0].Rows[i][1].ToString(),
pds.Tables[0].Rows[i][2].ToString(),pds.Tables[0].Rows[i][3].ToString(),
pds.Tables[0].Rows[i][4].ToString(),pds.Tables[0].Rows[i][5].ToString(),
pds.Tables[0].Rows[i][6].ToString());
}
}
else
{
throw new Exception("导入数据为空!");
}
return true;
}
SomethingJack 2012-02-13
  • 打赏
  • 举报
回复
围观帮顶 你可以去首页看看2012常见功能总结 看看是否能找到你的答案。这个也是一个常用的功能
http://topic.csdn.net/u/20120104/16/ffcef791-c455-4fd5-b76b-a0dc54acafb5.html
kinlin 2012-02-13
  • 打赏
  • 举报
回复
数据库里的数据大约50万左右,所以还需要考虑效率,特别是操作EXCEL时,谢谢

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧