ASP.NET 2.0中直接将Access数据库导入到Excel中

在实际的开发应用中,数据库导入导出是经常遇到的问题,尤其是数据库与Excel文件之间的导入导出,还存在数据类型不一致的问题。例如:数据库的数字超长时会在Excel里格式化成科学计数法的格式,或者记录内容是数字和字符的混合内容会丢失内容等等。将Access数据库的内容直接导入到Excel则可以避免这些问题。

下面例子就是实现这个功能,例子中的数据库使用《ASP.NET 2.0应用开发技术》一书中自带的数据库为例子。

另外,需要注意:Excel文件有诸多限制,在如果数据库记录内容很多,还要计算每次导出的数量和Sheet数目,另外,对Sheet名字相同的监测也省略了,需要的读者请根据情况自行添加上去。结合存储过程的分页功能实现起来比较好。

C#:

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 protected void Button1_Click(object sender, EventArgs e)
 {
  string sql;
  string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;   Data Source=|DataDirectory|ASPNET20Book.mdb;Persist Security Info=True";
  System.Data.OleDb.OleDbConnection cn =    new System.Data.OleDb.OleDbConnection(connstr);
  System.Data.OleDb.OleDbCommand cmd;
  cn.Open();
  //先得到记录数目:
  sql = "select Count(*) From Paging";
  cmd = new System.Data.OleDb.OleDbCommand(sql, cn);
  int RecordCount = (int)cmd.ExecuteScalar();
  // TODO:计算Sheet数目,进行记录分段,    将不同的数据段导入到不同的Sheet(Sheet数目不知道有没有限制:())
  // TODO:文件名,Sheet名字的存在检测略
  //每个Sheet只能最多保存65536条记录。
  sql = @"select top 65535 * into [Excel 8.0;database=" +    Server.MapPath(".") + @"ASPNET20Book.xls].[Sheet1] from Paging";
  cmd = new System.Data.OleDb.OleDbCommand(sql, cn);
  cmd.ExecuteNonQuery();
  cn.Close();
  cn.Dispose();
  cn = null;
 }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
 <title>直接将Access数据库导入到Excel文件</title>
</head>
<body>
 <form id="form1" runat="server">
  <asp:Button ID="Button1" runat="server"    OnClick="Button1_Click" Text="到处数据">
 </form>
</body>
</html>

VB.NET:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim sql As String
Dim connstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=|DataDirectory|ASPNET20Book.mdb;Persist Security Info=True"
Dim cn As System.Data.OleDb.OleDbConnection =  New System.Data.OleDb.OleDbConnection(connstr)
Dim cmd As System.Data.OleDb.OleDbCommand
cn.Open
sql = "select Count(*) From Paging"
cmd = New System.Data.OleDb.OleDbCommand(sql, cn)
Dim RecordCount As Integer = CType(cmd.ExecuteScalar, Integer)
sql = "select top 65535 * into [Excel 8.0;database=" +  Server.MapPath(".") + "ASPNET20Book.xls].[Sheet1] from Paging"
cmd = New System.Data.OleDb.OleDbCommand(sql, cn)
cmd.ExecuteNonQuery
cn.Close
cn.Dispose
cn = Nothing
End Sub

时间: 2024-10-07 13:53:52

ASP.NET 2.0中直接将Access数据库导入到Excel中的相关文章

Access 数据库导入到SQL 中关于科学计数法的问题

问题描述 我写了一个程序一个Excel表其中某一列数据单元格格式为不为文本类型.当我把这一列变为文本类型后就会出现1.604E+11科学记数法类型的但是正常显示的是116040000001当我把数据导入到数据库的时候会出现1.604E+11类型的.我用的数据库为Access数据库,我用的导入数据库的方法是stringmystring="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+filepath+";ExtendedProper

ASP\ASP.NET网站中怎么防止Access数据库被别人下载

 如何防止Access数据库下载是一个很老的话题了,网上的讨论也比较多.这里我们给出几种在ASP.NET下防止Access数据库被下载的方法. 我们这里假设Access数据库名字为 test.mdb. 1.把数据库放在WEB目录外 如你的网站目录是D:www,你可以把数据库放到D:data 这个文件夹里,然后修改网站程序中的数据库连接字串地址部分为:"D:datatest.mdb" ,这样数据库可以正常调用,但是无法下载的,因为它不在网站目录里. 假设在web.config中配置数据库

数据库迁移-asp中怎么样将access数据导入SqlServer?

问题描述 asp中怎么样将access数据导入SqlServer? 想要把本机上的 access 数据库文件 导入到 异地的sql server 2000上,纯asp 代码实现,不用企业管理器. 如果异地的sql server 2000 不好实现,本地的sql server 2000也可. 请高手指点.

在VB中兼容非ACCESS数据库的技巧

本文从VB数据库体系结构的角度出发,结合一个具体实例,阐述了在VB中兼容非ACCESS格式数据库的具体方法和技巧. 关键词:VB.非ACCESS数据库.数据存取对象 一个完整的数据库管理系统(DBMS)应是能兼容市面上各种较流行数据格式的系统,它充分考虑了不同用户的实际要求.鉴于目前市面上有多种数据库格式(如Foxpro.DBase.Paradox等)流行,因而在VB数据库应用程序中兼容非ACCESS数据库就显得尤为重要了. 作为一种流行的开发平台,VB提供了强大的数据库功能.主要有以下三种:数

如何将access数据库中的某项数据导入到excel

问题描述 如何将access数据库中的某项数据导入到excel 如何将access数据库中的某项数据导入到指定excel的工作薄中 解决方案 先查询出数据,然后循环写入.java用poi,.net用npoi写入excel,具体google下. 解决方案二: 下面是我用Vb写的一段Access的数据导入excel的程序 Dim i As Integer, r As Integer, c As Integer Dim newxls As Excel.Application Dim newbook A

asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法_实用技巧

本文实例讲述了asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法.分享给大家供大家参考,具体如下: public DataSet GetDataSet(string filePath) { string Connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';Extended Properties='Excel 8.0;HD

用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了

问题描述 用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了 ACCESS数据库表中列的顺序是1左,2左,11左,12左,1右,2右,11右,12右,但是当显示在datagridview中时就呈现上面的乱码, 解决方案 这是一个bug 试试看:http://blog.csdn.net/lukesunch/article/details/4644101 再不行就不要绑定,手工循环添加.

access-与数据库连接ACCESS数据库,显示库中所有的表名,但是出现很多不知道的表名

问题描述 与数据库连接ACCESS数据库,显示库中所有的表名,但是出现很多不知道的表名 用C#语句实现在combobox显示连接的数据库的中所有表的名称,但是为什么显示像 msysnamemap之类的很多不知道的表名,请问怎么解决. 解决方案 很正常,这些都是系统表名,你取出来以后判断下 if (!表名.Contains("msysname")) ComboBox1.Add(表名) 解决方案二: 如何得到一个ACCESS数据库的所有表名

如何将access mdb数据库导入到mysql中 .mdb转mysql

如何将access mdb数据库导入到mysql中,有人说用mysql-front但用起来十分难用,还要新建 dsn,dsn这东西有多少年没有人用了, 最简单的方法是使用navicat for mysql ,安装完成后,新建一个数据库,打开数据库后,展开数据库,会发现出现,表,视图,函数,等选项,在表上右击会出现导入向导,然后跟着向导一步步地向下做就可以了