首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 直接將 Access 資料庫匯出至 Excel 完整範例

     編輯:關於ASP.NET

實際開發應用中,資料庫匯入匯出常遇到,尤其是資料庫與 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" "https://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 只能最多保存 65535 條記錄。
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="https://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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved