输入参数为一个ds
输出参数为一个bool类型的true/false导出的文件为excel/csv/txt文件方法要考虑速度问题。。请高手指点

解决方案 »

  1.   

    是把 一个ds
    导出的文件为excel/csv/txt文件里吗?
      

  2.   

    string connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + templateFile
                     + ";Extended Properties=\"Excel 8.0;HDR=YES\"";
                _conn = new OleDbConnection(connstring);
                _conn.Open();
                _cmd = new OleDbCommand();
                _cmd.Connection = _conn;
    // Create excel file
    string strCmd = "CREATE TABLE workbook1 (Id int, Name nvarchar, Descriptioin nvarchar)";
                _cmd.CommandText = strCmd;
                _cmd.ExecuteNonQuery();
    // Add record
    column = "Id , Name , Descriptioin ";                value = "1, 'Taylor','Hello'";                strCmd = "INSERT INTO [workbook1$] ( " + column + ") values (" + value + ")";
                    _cmd.CommandText = strCmd;
                    _cmd.ExecuteNonQuery();
      

  3.   

    ds自带导出xml的方法的,如果想快,就直接用它的WriteXml方法
      

  4.   

       楼主,你去看我的帖子,我的帖子的,因为太长,所以我把我的贴子贴了两楼,2楼就是XML方式导出的代码,你要用第一种也可以的。数据源是DATAVIEW还是DATASET其实都一样的。
    帖子地址是:http://topic.csdn.net/u/20100325/21/c822a751-a321-4f50-9982-63a503848498.html?81447
      

  5.   

    把下面这个方法中的datagridview相应的换成ds就好了       
    /// <summary>
            /// 将datagridview中的数据导出到excel中
            /// </summary>
            /// <param name="fileNameString">保存路径</param>
            /// <param name="isShowExcele">是否显示excel</param>
            private void ExportDataGridview(string fileNameString, bool isShowExcele)
            {
                //定义表格内数据的行数和列数    
                int rowscount = dataGridView1.Rows.Count;
                int colscount = dataGridView1.Columns.Count;             Microsoft.Office.Interop.Excel.Application objExcel = null;   
                Microsoft.Office.Interop.Excel.Workbook objWorkbook = null;   
                Microsoft.Office.Interop.Excel.Worksheet objsheet = null;
                try  
                {   
                    //申明对象    
                    objExcel = new Microsoft.Office.Interop.Excel.Application();   
                    objWorkbook = objExcel.Workbooks.Add(Missing.Value);   
                    objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet;   
                    //设置EXCEL不可见    
                    objExcel.Visible = false;   
              
                    //向Excel中写入表格的表头    
                    int displayColumnsCount = 1;
                    for (int i = 0; i <= dataGridView1.ColumnCount - 1; i++)   
                    {
                        if (dataGridView1.Columns[i].Visible == true)   
                        {
                            objExcel.Cells[1, displayColumnsCount] = dataGridView1.Columns[i].HeaderText.Trim();   
                            displayColumnsCount++;   
                        }   
                    }   
                    //设置进度条    
                    //tempProgressBar.Refresh();    
                    //tempProgressBar.Visible   =   true;    
                    //tempProgressBar.Minimum=1;    
                    //tempProgressBar.Maximum=dgv.RowCount;    
                    //tempProgressBar.Step=1;    
                    //向Excel中逐行逐列写入表格中的数据
                    for (int row = 0; row <= dataGridView1.RowCount - 1; row++)   
                    {   
                        //tempProgressBar.PerformStep();    
              
                        displayColumnsCount = 1;   
                        for (int col = 0; col < colscount; col++)   
                        {
                            if (dataGridView1.Columns[col].Visible == true)   
                            {   
                                try  
                                {
                                    objExcel.Cells[row + 2, displayColumnsCount] = dataGridView1.Rows[row].Cells[col].Value.ToString().Trim();   
                                    displayColumnsCount++;   
                                }   
                                catch (Exception)   
                                {   
              
                                }   
              
                            }   
                        }   
                    }   
                    //隐藏进度条    
                    //tempProgressBar.Visible   =   false;    
                    //保存文件                   objExcel.Cells.HorizontalAlignment = XlHAlign.xlHAlignLeft; //文本左对齐                objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                            Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value,   
                            Missing.Value, Missing.Value);   
                }   
                catch (Exception error)   
                {   
                    MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);   
                    return;   
                }   
                finally  
                {   
                    //关闭Excel应用    
                    if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);   
                    if (objExcel.Workbooks != null) objExcel.Workbooks.Close();   
                    if (objExcel != null) objExcel.Quit();   
              
                    objsheet = null;   
                    objWorkbook = null;   
                    objExcel = null;   
                }   
                MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
      

  6.   

    你这是web的阿,我需要的是wenform的
      

  7.   

        winform的其实差不多啊,尤其是EXCEL类库的操作的,你看下我的代码,把它转成WINFORM就好了啊,我正在帮人弄个东西,没时间来试了。自己弄下也能学到很多东西啊。
      

  8.   

     private bool ExportToXls(string saveFileName, DataSet ds)
        {
            //Path.
            if (File.Exists(saveFileName))
            {
                File.Delete(saveFileName);
            }
            string strPath = saveFileName.Substring(0, saveFileName.Length - 4);
            string strXml = strPath + ".xml";//xml文件
            string strXsl = strPath + ".xsl";//xsl形式
            string strXls = strPath + ".xls";//excel文件        try
            {
                GetXmlFile(ds, strXml);
                GetXSLFile(ds, strXsl);            //Excel转换
                XmlDocument doc = new XmlDocument();
                doc.Load(strXml);
                XslTransform xslt = new XslTransform();
                xslt.Load(strXsl);
                XmlElement root = doc.DocumentElement;
                XPathNavigator nav = root.CreateNavigator();
                XmlTextWriter writer = new XmlTextWriter(strXls, null);
                xslt.Transform(nav, null, writer, null);
                writer.Close();
                File.Delete(strXml);
                File.Delete(strXsl);
                return true;
            }
            catch (Exception ex)
            {
                throw (new Exception(ex.Message));
            }
        }
      

  9.   

    问下lz这样的可以不..导出到excel文件的
      

  10.   

    导出的EXCEL 楼主参考下,是不是你想要的
    http://blog.csdn.net/benyouyong/archive/2010/03/26/5418874.aspx
      

  11.   

    1
    http://www.codeproject.com/KB/office/FastExcelExporting.aspx
    2
    http://www.codeproject.com/KB/dotnet/ExportToExcel.aspx
      

  12.   


    //导出Excel的方法
      private void ExportExcel()
      { 
       DataSet ds=dtsSelect;//数据源
       if(ds==null) return;    string saveFileName=""; 
       bool fileSaved=false; 
       SaveFileDialog saveDialog=new SaveFileDialog(); 
       saveDialog.DefaultExt ="xls"; 
       saveDialog.Filter="Excel文件|*.xls"; 
       saveDialog.FileName ="Sheet1"; 
       saveDialog.ShowDialog(); 
       saveFileName=saveDialog.FileName; 
       if(saveFileName.IndexOf(":")<0) return; //被点了取消    Excel.Application xlApp=new Excel.Application();    if(xlApp==null)
       { 
        MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel"); 
        return; 
       }    Excel.Workbooks workbooks=xlApp.Workbooks; 
       Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); 
       Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 
       //写入字段 
       for(int i=0;i<ds.Tables[0].Columns.Count;i++)
       { 
        worksheet.Cells[1,i+1]=ds.Tables[0].Columns[i].ColumnName; 
       } 
       //写入数值 
       
       for(int r=0;r<ds.Tables[0].Rows.Count;r++)
       { 
        for(int i=0;i<ds.Tables[0].Columns.Count;i++)
        { 
         worksheet.Cells[r+2,i+1]=ds.Tables[0].Rows[r][i]; 
        } 
        System.Windows.Forms.Application.DoEvents(); 
       } 
       worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
       if(cmbxType.Text!="Notification")
       {
        Excel.Range rg=worksheet.get_Range(worksheet.Cells[2,2],worksheet.Cells[ds.Tables[0].Rows.Count+1,2]);
        rg.NumberFormat="00000000";
       }
       if(saveFileName!="")
       { 
        try
        { 
         workbook.Saved =true; 
         workbook.SaveCopyAs(saveFileName); 
         fileSaved=true; 
        }
        catch(Exception ex)
        { 
         fileSaved=false; 
         MessageBox.Show("导出文件时出错,文件可能正被打开!\n"+ex.Message); 
        } 
       }
       else
       { 
        fileSaved=false; 
       } 
       xlApp.Quit(); 
       GC.Collect();//强行销毁 
       if(fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
      }
      

  13.   


    第二种可以导出excel,但是也可以导出xml
    但是导出xml的格式不好看。还有到处的excel的大小大了一倍。有解决方法吗〉?
      

  14.   

    dataset导出excel的方法完全可以google一下
      

  15.   

    18楼基本上已经达成我的需求了。。1 只是导出EXCEL的格式处理不是很全面2 导出XML的格式也不是很直观。
    请18楼给改进下:谢谢了阿
      

  16.   

    如果输入参数为datareader对象,怎么实现比较好,谁有好的方法
      

  17.   

    http://www.codeproject.com/KB/cs/Excel_and_C_.aspx参考这个自己改格式了。