建议你数据量大的时候导出为CSV格式,这样速度比较快!你的字符串长度比较大,可以考虑使用StringBulider类来实现字符串相加

解决方案 »

  1.   

    public string Export2Txt(string sFilePath,string sFileName,string sSql) 
    {
    string sFile="";
    string sArrFile="";
    int oRow;
    dvQuery=objQuery.GetQueryData(sSql); if (dvQuery.Table.Rows.Count>=65535)
    {
    oRow=0; for (int x=1;x<=GetFileNum(dvQuery.Table.Rows.Count);x++) 
    {
    sFile=sFilePath+sFileName.Replace(".csv","_"+x.ToString()+".csv"); sArrFile=sArrFile+","+sFileName.Replace(".csv","_"+x.ToString()+".csv"); // Delete the file if it exists.
    if (File.Exists(sFile)) 
    {
    File.Delete(sFile);
    } StreamWriter sw = new StreamWriter(sFile,false, System.Text.Encoding.GetEncoding("GB2312"));
    for(int j=0;j<dvQuery.Table.Columns.Count;j++)
    {
    sw.Write("\""+dvQuery.Table.Columns[j].ColumnName.ToString()+"\",");

    }
    sw.Write("\r\n");


    for( int i=oRow; i<dvQuery.Table.Rows.Count; i++)
    {
    for(int j=0; j<dvQuery.Table.Columns.Count; j++)
    {
    sw.Write("\""+dvQuery.Table.Rows[i][j].ToString() + "\",");
    }
    sw.Write("\r\n"); oRow++; 
    if (oRow%65535==0)
    i=dvQuery.Table.Rows.Count+1;
    } sw.Close();


    }
    return sArrFile; }
    else
    {
    sFile=sFilePath+sFileName;
    sArrFile=sFileName; // Delete the file if it exists.
    if (File.Exists(sFile)) 
    {
    File.Delete(sFile);
    } StreamWriter sw = new StreamWriter(sFile,false, System.Text.Encoding.GetEncoding("GB2312")); oRow=1; for(int j=0;j<dvQuery.Table.Columns.Count;j++)
    {
    sw.Write("\""+dvQuery.Table.Columns[j].ColumnName.ToString()+"\",");

    }
    sw.Write("\r\n");

    oRow++; 
    for( int i=0; i<dvQuery.Table.Rows.Count; i++)
    {
    for(int j=0; j<dvQuery.Table.Columns.Count; j++)
    {
    sw.Write("\""+dvQuery.Table.Rows[i][j].ToString() + "\",");
    }
    oRow++;
    sw.Write("\r\n");
    } sw.Close(); }
    return sArrFile; }
    public int GetFileNum(int iRecord)
    {
    iRecord++;
    if (iRecord%65535==0)
    return iRecord/65535;
    else
    return (iRecord-(iRecord%65535))/65535+1;

    }
      

  2.   

    楼上的,能说详细点么,怎么导出成多个Sheet啊。多谢了
      

  3.   

    导出多个sheet即可。
    在msdn中看关于Worksheets的内容
    Dim wksNewSheet As Excel.WorksheetSet wksNewSheet = Worksheets.Add
    With wksNewSheet
       ' 在此处使用新工作表的
       ' 属性和方法。
    End With