|
方法之一:
把dataset的数据转到数组,然后一次性赋值。
代码在 windows7 + office2010测试通过
测试环境vs2010,NET4.0.- public void DemoAccess()
- {
- Excel.Worksheet sh;
- sh = this.Application.ActiveSheet;
- string strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\myFile\\罗斯文.accdb;Jet OLEDB:Database Password=";
- string strSql = "SELECT * FROM 客户";
- DataSet ds = new DataSet();
- OleDbConnection Cnn = null;
-
- Cnn = new OleDbConnection(strCnn);
- OleDbCommand myCommand = new OleDbCommand(strSql, Cnn);
- OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myCommand);
- try
- {
- Cnn.Open();
- myDataAdapter.Fill(ds);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- return;
- }
- finally
- {
- Cnn.Close();
- }
- DataTable table = ds.Tables[0];
- int r = table.Rows.Count;
- int c =table.Columns.Count;
- object[,] objarr = new object[r, c];
- try
- {
-
- for (int i = 0; i < r; i++)
- {
- for (int j = 0; j < c; j++)
- {
- objarr[i, j] = table.Rows[i].ItemArray[j];
- }
- }
- Excel.Range rng;
- //定义范围
- rng = sh.Range[sh.Cells[2,1],sh.Cells[r,c]];
- //数组赋值工作表范围
- rng.Value2 = objarr;
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- return;
- }
- }
复制代码 |
|