一、 在客戶端把數據導入到 Excel 文件步驟
1、 創建 Excel application 對象,打開或生成 Excel 文件
// 服務端創建 StringBuilder 對象
System.Text.StringBuilder sb= new System .Text .StringBuilder ();
// 指定客戶端執行語言
sb.Append ("
1<script language="VBScript">");
2
3sb.Append ("<!--\r\n");
4
5sb.Append ("dim xls\r\n");
6
7// 創建 Excel application 對象
8
9sb.Append ("Set xls=CreateObject(\"Excel.Application\")\r\n");
10
11// 打開 Excel 文件
12
13sb.Append ("xls.WorkBooks.Open( C:\\\MyExcel.xls )\r\n");
14
152、 選定工作表,把數據導入到 Excel
16
17// 選定欲操作的 Excel 表
18
19sb.Append ("xls.Sheets(1).Select\r\n");
20
21// 获得要操作数据表的行、列数
22
23int rows=dt.Rows.Count,cols=dt.Columns.Count ;
24
25// 按行列将数据写入 Excel 表
26
27for ( int j=brow+1;j<brow+cols ;j++)
28
29for ( int i=bcol;i<bcol+rows ;i++)
30
31sb.Append ("xls.Sheets(1).Cells(" +(j-1) \+ "," + (i) + ")=\"" + dt.Rows[i-bcol][j-brow].ToString ().Replace ("\"","'") + "\"\r\n");
32
333 、显示 Excel 文件
34
35sb.Append ("xls.visible=true\r\n");
36
374 、釋放創建的 Excel application 對象
38
39sb.Append ("set xls=nothing\r\n");
40
41sb.Append ("-->");
42
43sb.Append ("</script>
");
5 、將代碼寫到客戶端
this .Page.RegisterClientScriptBlock("",sb.ToString ());
二、 在服務端 操作 Excel 文件
服務端操作 Excel 文件,是把 Excel 文件看作數據庫,把 Excel 工作表當作數據表
1、 創建連接並打開連接
protected System.Data .OleDb.OleDbConnection dbcnn;
cnnstr="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=Yes;";Data Source= C:\\MyExcel.xls ” ;
dbcnn= new OleDbConnection (cnnstr);
dbcnn.Open ();
2、 創建 OleDbCommand 對象用來操作 Excel 文件
protected System.Data .OleDb .OleDbCommand dbcmd;
dbcmd= new OleDbCommand();
dbcmd.Connection =dbcnn;
3、 操作 Excel 文件
// 获得要操作数据表的行、列数
rows=dt.Rows.Count ;
cols=dt.Columns.Count-1 ;
// 按行列将数据写入 Excel 文件 Sheet1 工作表
for ( int i=0;i<rows;i++)
{
olestr=" insert into [Sheet1$] values(";
for ( int j=0;j<cols;j++)
olestr=olestr+"'"+dt.Rows[i][j].ToString ()+"',";
olestr+="'"+Convert.ToDecimal (dt.Rows[i][cols].ToString ())+"')";
dbcmd.CommandText =olestr;
dbcmd.ExecuteNonQuery ();
}
4、 釋放 OleDbCommand 對象、關閉連接
dbcmd.Dispose ();
dbcnn.Close ();
5、 可操作的 SQL 語句
// 建立名為 punchdate 的工作表,並指明子段類型。
// 創建工作表好處是可指定子段類型,否則都以字符串導出
CREATE TABLE punchdate( mno char(5), punchNum float )
// 插入新數據
Insert into punchdate(mno,punchNum) values( ‘ 09 ’ ,9000)
// 更新數據
Update punchdate set punchNum=8000 where mno= ’ 09 ’
6、 不可操作的 SQL 語句
Delete from punchdate
7、 注意連接子串
//HDR=Yes 説明工作表第一行為子段名
"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0; HDR=Yes ;";Data Source= C:\\MyExcel.xls ”
//HDR=No 説明工作表沒有含子段名的行
<