乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > asp.net怎么样把excel文件导入到数据库和导出来(紧...-asp.net导入excel文件,excel怎么导入

asp.net怎么样把excel文件导入到数据库和导出来(紧...-asp.net导入excel文件,excel怎么导入

作者:乔山办公网日期:

返回目录:excel表格制作


我是这样做的: 先将zdexcel中的数据导入到gridview中,再从gridview中读取数据存入数据库。 下面的代码是将excel导入到gridview中,excel版本为97-2003 前台有一个控件fileupload,我把名字改成了file1 另外还要拖一个gridview控件和button控件,...

如果你只是要把excel保存到e79fa5e98193e78988e69d83332数据库,并不需要进一步的数据统计查询,你就可以简单地在asp.net的界面上放一个上传文件按钮,后台收到上传的excel文件,把它以二进制流的形式保存到SQL Server的Image字段或文件字段(据说sql2008才有)。导出时,在页面上放一个附件下载链接,用户点连接时你从数据库字段读出二进制流把它通过Response.OutputStream输出到页面上,即可出现excel的下载保存框。

如果你需要以导入的excel数据为基础,进行更多的数据统计查询,你就必须分析设计数据库表、字段,把相应的excel单元格数据保存到数据库字段。关键是如何从web页面导入excel单元格数据、又如何把查询出来的数据放到web页面上显示成客户需要的图表?
有两种方案:
1.用Excel自动化技术。
引用Excel的类型库生成.Net的包装类。导入时采用页面放上传文件按钮的方法,在服务器端收到文件后,用excel自动化类打开excel文件,再学会VBA语法,书写大量的代码读取单元格,然后连接数据库保存。导出时,查询数据库,启动excel自动化对象,通过VBA语法填写单元格,保存成excel文件,再用Response.OutputStream输出到页面上,触发excel文件的下载保存框。缺点:容易在服务器端产生excel死进程,代码编写复杂、代码量大、还要掌握VBA语法,用户需要上传、下载操作
有人会说,显示数据时可以用网页直接显示,不用导出成excel。其实也很麻烦:用网页显示复杂的报表格式,网页设计工作量大;如果客户要求导出excel,这个工作就省不了;如果客户要求打印、打印预览、页面设置,比起excel浏览器的打印就捉襟见肘了。

2.用微软Office中间件——SOAOffice。(建议使用最新版的)
用SOAOffice输出Excel,就不会再有上述烦恼。通过SOAOffice不仅能够动态填充excel,读取excel单元格,而且还能在浏览器里直接浏览excel、或者下载、另存。SOAOffice提供标准C#.Net组件,组件在服务器端不使用自动化调用,稳定支持大量web并发访问,这是用com调用无法实现的。组件的属性方法都比较简单,易于调用,你完全不用去掌握复杂的VBA调用。

由于是纯.Net组件,所以服务器端不需安装office。 SOAOffice的excel组件SOAExcel含有Sheet、Cell等类似Excel的简化接口,调用简单。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库。
SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel,用户不必先下载再打开观看内容。

举个导出excel的例子:
SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse();
SOAOfficeX.ExcelResSheet sheet1 = SOAExcel.openSheet("Sheet1"); // 打开一个Sheet
sheet1.openCell("D"+String.valueOf(8+i)).setValue(rs.getString("Count")); //循环填充数据。
SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(response);
SOACtrl.assign(SOAExcel); // 绑定数据
// 打开模板并生成最终的excel报表
SOACtrl.webOpen("doc/test.xls", 1, UserName, "Excel.Sheet");

上述代码不但动态填充生成excel,而且在网页里直接显示生成的Excel给终端用户,由于使用了1打开模式,Excel是只读显示的。

读取excel单元格的代码也很简单:
SOAOfficeX.ExcelRequest SOAExcel = new SOAOfficeX.ExcelRequest();
SOAOfficeX.IExcelReqSheet sheetOrder = SOAExcel.OpenSheet("销售订单");
SOAOfficeX.IExcelReqCell cell1;
cell1 = sheetOrder.OpenCell("I5");//订单编码
string sOrderNum = cell1.Value;//cell1.Value就是读取的结果
我很想回答呢,可是这些前沿的知识会的人不多,我下学期学这个,到时候回答你也就晚了,给你两个网
http:///book/aspnet.htm
http:///
你自己看看能有用不
我们交个朋友吧!学习上的交

#region 读取Excel
try
{
DataSet dsExcel1 = new DataSet();
HttpPostedFile PostFile = this.FileUpload1.PostedFile;

string FileName = DateTime.Now.ToShortDateString() + " " + Path.GetFileName(PostFile.FileName);

string FilePath = ConfigurationSettings.AppSettings["ExcelPath"].ToString();
string Path1 = FilePath + FileName;
PostFile.SaveAs(Path1);
PostFile = null;

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path1 + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

OleDbConnection SQLCon = new OleDbConnection(strConn);

SQLCon.Open();
DataTable dt = SQLCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string str = dt.Rows[0][2].ToString();

string strSQl = "select * from [" + str + "]";
OleDbDataAdapter Adapter = new OleDbDataAdapter(strSQl, SQLCon);
Adapter.Fill(dsExcel1);
SQLCon.Close();
File.Delete(Path1);

#region LSTBand
List<string> LSTBand = new List<string>();
LSTBand.Add("序号");
LSTBand.Add("档案号");
LSTBand.Add("支部");
LSTBand.Add("姓名");

LSTBand.Add("身份证");

LSTBand.Add("性别");
LSTBand.Add("民族");
LSTBand.Add("籍贯");
LSTBand.Add("出生年月");
LSTBand.Add("入盟时间");
LSTBand.Add("参加工作时间");
LSTBand.Add("学历");
LSTBand.Add("单位(部门)及职务");
LSTBand.Add("职务");
LSTBand.Add("职称");
LSTBand.Add("社会职务");
LSTBand.Add("盟内职务");
LSTBand.Add("曾担任职务");
LSTBand.Add("家庭地址");
LSTBand.Add("单位电话");
LSTBand.Add("家庭电话");
LSTBand.Add("手机(小灵通)");
LSTBand.Add("电子信箱");
LSTBand.Add("退休情况");
LSTBand.Add("参加其他党派");
LSTBand.Add("毕业学校");
LSTBand.Add("学位");
LSTBand.Add("个人简历");
LSTBand.Add("工作业绩");
LSTBand.Add("奖励情况");
LSTBand.Add("个人爱好及特长");

LSTBand.Add("推荐人姓名");
LSTBand.Add("评定时间");
LSTBand.Add("人员性质");
LSTBand.Add("懂何种外语(级别)");
//LSTBand.Add("单位职务(包括曾任)");
LSTBand.Add("家庭成员");
LSTBand.Add("社会关系");
LSTBand.Add("发表学术论文e68a84e799bee5baa6e79fa5e98193338情况");
LSTBand.Add("业务获奖情况");
LSTBand.Add("获荣誉奖情况");
LSTBand.Add("对中国民主同盟组织的认识");
LSTBand.Add("主要成就和社会影响");
//LSTBand.Add("家庭主要成员和社会影响");
LSTBand.Add("家庭主要成员及国内外亲属中知名人士");
LSTBand.Add("党派组织审核意见");
LSTBand.Add("备注");

#endregion

#region 获取Excel表内容到Dataset
for (int i = 0; i < dsExcel1.Tables[0].Columns.Count; i++)
{
string Excelcolumnname = dsExcel1.Tables[0].Rows[0][dsExcel1.Tables[0].Columns[i].ColumnName].ToString();
if (Excelcolumnname != "")
{
dtExcel.Columns.Add(Excelcolumnname);
}
}

for (int ii = 1; ii < dsExcel1.Tables[0].Rows.Count; ii++)
{
DataRow drExcel = dtExcel.NewRow();
for (int i = 0; i < dsExcel1.Tables[0].Columns.Count; i++)
{
if (dsExcel1.Tables[0].Rows[0][dsExcel1.Tables[0].Columns[i].ColumnName].ToString() != "")
{
drExcel[dsExcel1.Tables[0].Rows[0][dsExcel1.Tables[0].Columns[i].ColumnName].ToString()] = dsExcel1.Tables[0].Rows[ii][dsExcel1.Tables[0].Columns[i].ColumnName];
}
}
dtExcel.Rows.Add(drExcel);
}

for (int i = 0; i < dtExcel.Columns.Count; i++)
{
//Response.Write("<script>alert('" + dsExcel.Tables[0].Columns[i].ColumnName + "');</script>");
lstcols.Add(dtExcel.Columns[i].ColumnName);
}

bool ExcelFormat = IsExcel(LSTBand, lstcols);
#endregion

if (ExcelFormat)
{
dsExcel.Tables.Add(dtExcel);
}
else
{
dsExcel = null;
Literal1.Text = "<script>alert('Excel表格式错误');</script>";
return;
}

}
catch (Exception e1)
{
Literal1.Text = "<script>alert('读取Excel表错误,或者" + e1.Message.ToString() + "');</script>";
return;
}
#endregion

相关阅读

关键词不能为空

ppt怎么做_excel表格制作_office365_word文档_365办公网