using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Demo
{
public partial class Create_DBF_File : System.Web.UI.Page
{
OleDbConnection dBaseConnection = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
CreateDBFFile();
}
}
private DataTable GenerateData()
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add(new DataColumn("Column3", typeof(string)));
dt.Columns.Add(new DataColumn("Column4", typeof(DateTime)));
int totalRow = 25;
for (int i = 0; i < totalRow; i++)
{
dr = dt.NewRow();
dr["Column1"] = i + 1;
dr["Column2"] = "Row" + i;
dr["Column3"] = "Row" + i;
dr["Column4"] = DateTime.Now;
dt.Rows.Add(dr);
}
return dt;
}
private void CreateDBFFile()
{
string filepath = null;
filepath = Server.MapPath("~//File//");
string TableName = "T" +DateTime.Now.ToLongTimeString().Replace(":", "").Replace("AM","").Replace("PM", "");
using(dBaseConnection = newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " + " Data Source=" + filepath + "; " + "Extended Properties=dBase IV"))
{
dBaseConnection.Open();
OleDbCommand olecommand = dBaseConnection.CreateCommand();
if ((System.IO.File.Exists(filepath + "" + TableName +".dbf")))
{
System.IO.File.Delete(filepath + "" + TableName + ".dbf");
olecommand.CommandText = "CREATE TABLE [" + TableName + "] ([Column1] int, [Column2] varchar(10), [Column3] varchar(10), [Column4] datetime)";
olecommand.ExecuteNonQuery();
}
else
{
olecommand.CommandText = "CREATE TABLE [" + TableName + "] ([Column1] int, [Column2] varchar(10), [Column3] varchar(10), [Column4] datetime)";
olecommand.ExecuteNonQuery();
}
OleDbDataAdapter oleadapter = newOleDbDataAdapter(olecommand);
OleDbCommand oleinsertCommand = dBaseConnection.CreateCommand();
foreach (DataRow dr in GenerateData().Rows)
{
string Column1 = dr["Column1"].ToString();
string Column2 = dr["Column2"].ToString();
string Column3 = dr["Column3"].ToString();
DateTime Column4 = Convert.ToDateTime(dr["Column4"]);
oleinsertCommand.CommandText = "INSERT INTO [" + TableName + "] ([Column1], [Column2],[Column3],[Column4]) VALUES ('" + Column1 + "','" + Column2 + "','" + Column3 + "','" + Column4 + "')";
oleinsertCommand.ExecuteNonQuery();
}
}
FileStream sourceFile = new FileStream(filepath + "" + TableName +".dbf", FileMode.Open);
float FileSize = 0;
FileSize = sourceFile.Length;
byte[] getContent = newbyte[Convert.ToInt32(Math.Truncate(FileSize))];
sourceFile.Read(getContent, 0,Convert.ToInt32(sourceFile.Length));
sourceFile.Close();
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/dbf";
Response.AddHeader("Content-Length", getContent.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=Demo.dbf;");
Response.BinaryWrite(getContent);
Response.Flush();
System.IO.File.Delete(filepath + "" + TableName + ".dbf");
Response.End();
}
}
}
Don't forgate to create File folder inside your project root folder.
If you are getting the below error:-
The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
Means, In your local machine AccessDatabaseEngine not registered.
So, You need to download it from Microsoft web site check following link for downloading AccessDatabaseEngine
If you are getting the below error in 64 bit machine:-
The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
then your machine IIS

No comments:
Post a Comment