Excel本身可以看作一个DataBase, 你用OleDb连接上之后直接用Sql语句插入更快一点

解决方案 »

  1.   

    记得引用owcusing OWC;
    Microsoft Office Web Components 9.0using OWC;private void button1_Click(object sender, System.EventArgs e)
    {
    if(this.saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
    strSvaeName =this.saveFileDialog1.FileName;
    if(strSvaeName.Trim() !="")
    {
    this.WriteDataGrid2Excel(nu);
    }
    }
                    }private void WriteDataGrid2Excel( int num) //num 是字段列数
    {
    int count = strLie.Length -1;
    SpreadsheetClass xlsheet = new SpreadsheetClass();
    System.Data.SqlClient.SqlDataReader sqlReader = cb.GetDataReader(sql);
    int numbercols = num;
    int row=1;
    for(int j = 0;j<this.listBox2.Items.Count ;j++)
    {
    xlsheet.ActiveSheet.Cells[row,j+1] = ((SQLDatabase.GetListbox)this.listBox2.Items[j]).Id;
    }
    while (sqlReader.Read())
    {
    for (int i=0;i<numbercols;i++) 
    {          
    xlsheet.ActiveSheet.Cells[row+1,i+1] = sqlReader.GetValue(i).ToString();
    }
    row++;
    }
    sqlReader.Close();
    try
    {
    xlsheet.ActiveSheet.Export(strSvaeName,OWC.SheetExportActionEnum.ssExportActionNone);
    MessageBox.Show(" 数据导出成功!","成功",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
    catch(System.Exception e)
    {
    MessageBox.Show(e.Message.ToString(),"error",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    }把sqlserver 记录生成execl文件速度狠快的。