搞掂啦~~~~~~~~~~~~~~~! 多谢大家~~!! SqlConnection con = new SqlConnection("Server=REALSERVER;uid=sa;pwd=rm123456;database=ZJConstruction"); SqlDataAdapter da = new SqlDataAdapter("Select * From Files", con); SqlCommandBuilder MyCB = new SqlCommandBuilder(da); DataSet ds = new DataSet("Files"); byte[] MyData= new byte[0];
/// Excel格式
/// </summary>
/// <returns>成功与否 true:成功, false:失败</returns>
public bool ExcelExport()
{
//复制文件
System.IO.File.Copy (m_sTemplateFile,m_sTagPath+m_sNewFileName,true);
string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ m_sTagPath+m_sNewFileName+
@";Extended Properties=""Excel 5.0;;HDR=Yes;"";" ;
CreateTable (this.m_sDS,strConn,this.m_sTagTableName ); return UpdateDataset(this.m_sDS,strConn,m_sTagTableName);
}
/// <summary>
/// 生成目标表结构
/// </summary>
/// <param name="sDS">源数据集合</param>
/// <param name="TagConnStr">目标数据库连接字符串</param>
/// <param name="TagTableName">目标表名</param>
/// <returns>成功与否,true 成功,false 失败</returns>
public bool CreateTable(/*string SourceConnStr,string SourceSqlStr*/DataSet sDS, string TagConnStr,string TagTableName)
{ string strSql;
int i = 0;
//根据源数据表的字段类型拼create语句
strSql="Create Table "+TagTableName+ "(" ;
foreach(DataColumn dc in sDS.Tables[0].Columns)
{
string strColumnName =dc.ColumnName;
strColumnName = strColumnName.Replace("("," (").Replace(")",")");
strColumnName = strColumnName.Replace(" ","");
i++;
string type = dc.DataType.ToString();
switch(type)
{
case "System.String":
if(i==sDS.Tables[0].Columns.Count)
{
strSql+= strColumnName +" char(255)";
}
else
{
strSql+= strColumnName +" char(255),";
}
break;
case "System.Int32":
if(i==sDS.Tables[0].Columns.Count)
{
strSql+= strColumnName +" int ";
}
else
{
strSql+= strColumnName +" int ,";
}
break;
case "System.DateTime":
if(i==sDS.Tables[0].Columns.Count)
{
strSql+= strColumnName +" SmallDateTime ";
}
else
{
strSql+= strColumnName +" SmallDateTime ,";
}
break;
case "System.Decimal":
if(i==sDS.Tables[0].Columns.Count)
{
strSql+= strColumnName +" Decimal ";
}
else
{
strSql+= strColumnName +" Decimal ,";
}
break;
default:
break;
}
}
strSql+=")";
//执行SQL,生成表。
OleDbConnection conn=new OleDbConnection(TagConnStr);
conn.Open();
try
{
OleDbCommand command=new OleDbCommand(strSql,conn);
command.ExecuteNonQuery();
}
catch(System.Exception ee)
{
return true;
}
conn.Close();
return true;
} /// <summary>
/// 把原表的数据拷贝给目标表
/// </summary>
/// <param name="sSet">源数据集合</param>
/// <param name="vTagConn">目标数据库连接字符串</param>
/// <param name="vTagTableName">目标表名</param>
/// <returns>成功与否 true:成功,false 失败</returns>
private bool UpdateDataset(DataSet sSet,string vTagConn,string vTagTableName)
{
OleDbCommandBuilder bd;
OleDbConnection tConn;
OleDbDataAdapter tAdpt;
DataSet tSet;
sSet.Tables [0].Columns[0].DataType.ToString ();
//连接目标数据库
tConn=new OleDbConnection (vTagConn);
//设置InsertCommand
string strConn=vTagConn;
string strSql=@"Select * From "+ vTagTableName;
try
{
tAdpt=new OleDbDataAdapter (strSql,tConn);
bd=new OleDbCommandBuilder (tAdpt);
bd.GetInsertCommand();
tConn.Open ();
tSet=new DataSet ();
tAdpt.Fill (tSet);
}
catch(System.Exception ee)
{
return false;
}
//更新目标数据库
int count=sSet.Tables [0].Columns.Count ;
try
{
foreach(System.Data.DataRow sRow in sSet.Tables [0].Rows )
{
//拷贝数据
DataRow tRow=tSet.Tables [0].NewRow ();
for (int i=0;i<count;i++)
{
if(sRow.IsNull(i))
{
}
else
tRow[i] = sRow[i].ToString();
}
tSet.Tables [0].Rows.Add (tRow);
}
tAdpt.Update (tSet.Tables [0]);
tConn.Close ();
}
catch(System.Exception ee)
{
return false;
}
return true;
}
多谢大家~~!! SqlConnection con = new SqlConnection("Server=REALSERVER;uid=sa;pwd=rm123456;database=ZJConstruction");
SqlDataAdapter da = new SqlDataAdapter("Select * From Files", con);
SqlCommandBuilder MyCB = new SqlCommandBuilder(da);
DataSet ds = new DataSet("Files"); byte[] MyData= new byte[0];
da.Fill(ds, "Files");
DataRow myRow;
myRow=ds.Tables["Files"].Rows[1];
MyData = (byte[])myRow["fileContext"];
int ArraySize = new int();
ArraySize = MyData.GetUpperBound(0); FileStream fs = new FileStream(@"C:\Documents and Settings\Administrator\My Documents\My Pictures\样品xxxx.doc", FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 0,ArraySize);
fs.Close();