先谢谢好心的大虾了!

解决方案 »

  1.   

    大致思路是这样的,假设你DataGrid绑定的数据表为MyTable;
    先:string OLEDBConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFileName + "; Extended Properties=Excel 8.0;";定义一个连接字符串然后在根据MyTable构照一个创建表结构的sql语句,创建这个空表,最后执行插入数据的语句就可以了.整理思路你就把Excel文件当作一个数据表来处理就行了,不难.
      

  2.   

    using System;
    using System.Data;
    using System.Data.OleDb;
    namespace GRIS.ExcelReprot
    {
    /// <summary>
    /// ImportExportToExcel 的摘要说明。
    /// </summary>
    public class ImportExportToExcel
    {
    private string strConn ;
            
    private System.Windows.Forms.OpenFileDialog openFileDlg=new System.Windows.Forms.OpenFileDialog();
    private System.Windows.Forms.SaveFileDialog saveFileDlg=new System.Windows.Forms.SaveFileDialog();      
     
    public ImportExportToExcel()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    this.openFileDlg.DefaultExt = "xls";
    this.openFileDlg.Filter = "Excel文件 (*.xls)|*.xls";this.saveFileDlg.DefaultExt="xls";
    this.saveFileDlg.Filter= "Excel文件 (*.xls)|*.xls";}#region 从Excel文件导入到DataSet
    //        /// <summary>
    //        /// 从Excel导入文件
    //        /// </summary>
    //        /// <param name="strExcelFileName">Excel文件名</param>
    //        /// <returns>返回DataSet</returns>
    //        public DataSet ImportFromExcel(string strExcelFileName)
    //        {
    //            return doImport(strExcelFileName);
    //        }
    /**//// <summary>
    /// 从选择的Excel文件导入
    /// </summary>
    /// <returns>DataSet</returns>
    public DataSet ImportFromExcel()
    {
    DataSet ds=new DataSet();
    if (openFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    ds=doImport(openFileDlg.FileName);
    return ds;
    }
    //// <summary>
    /// 从指定的Excel文件导入
    /// </summary>
    /// <param name="strFileName">Excel文件名</param>
    /// <returns></returns>
    public DataSet ImportFromExcel(string strFileName)
    {
    DataSet ds=new DataSet();
    ds=doImport(strFileName);
    return ds;
    }
    /**//// <summary>
    /// 执行导入
    /// </summary>
    /// <param name="strFileName">文件名</param>
    /// <returns>DataSet</returns>
    private DataSet doImport(string strFileName)
    {
    if (strFileName=="") return null;
                  
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" +  strFileName + ";" +
    "Extended Properties=Excel 8.0;";
    OleDbDataAdapter ExcelDA = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);DataSet ExcelDs = new DataSet();try
    {
    ExcelDA.Fill(ExcelDs, "ExcelInfo");           
    }
    catch(Exception err)
    {
    System.Console.WriteLine( err.ToString() );
    }
    return ExcelDs;
    }
    #endregion#region 从DataSet到出到Excel
    /**//// <summary>
    /// 导出指定的Excel文件
    /// </summary>
    /// <param name="ds">要导出的DataSet</param>
    /// <param name="strExcelFileName">要导出的Excel文件名</param>
    public void ExportToExcel(DataSet ds,string strExcelFileName)
    {
    if (ds.Tables.Count==0 || strExcelFileName=="") return;
    doExport(ds,strExcelFileName);
    }
    /**//// <summary>
    /// 导出用户选择的Excel文件
    /// </summary>
    /// <param name="ds">DataSet</param>
    public void ExportToExcel(DataSet ds)
    {
    if (saveFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    doExport(ds,saveFileDlg.FileName);
                
    }
    /**//// <summary>
    /// 执行导出
    /// </summary>
    /// <param name="ds">要导出的DataSet</param>
    /// <param name="strExcelFileName">要导出的文件名</param>
    private void doExport(DataSet ds,string strExcelFileName)
    {
                
    Excel.Application excel= new Excel.Application();
                
    //            Excel.Workbook obj=new Excel.WorkbookClass();
    //            obj.SaveAs("c:\zn.xls",Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null);int rowIndex=1;
    int colIndex=0;excel.Application.Workbooks.Add(true);
                
        
    System.Data.DataTable table=ds.Tables[0] ;
    foreach(DataColumn col in table.Columns)
    {
    colIndex++;    
    excel.Cells[1,colIndex]=col.ColumnName;                
    }foreach(DataRow row in table.Rows)
    {
    rowIndex++;
    colIndex=0;
    foreach(DataColumn col in table.Columns)
    {
    colIndex++;
    excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
    }
    }
    excel.Visible=false;    
    //excel.Sheets[0] = "sss"; ///////////////////////////////?????????????????????//
    excel.ActiveWorkbook.SaveAs(strExcelFileName+".XLS",Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null,null);
                
                
    //wkbNew.SaveAs strBookName
    //excel.Save(strExcelFileName);
    excel.Quit();
    excel=null;
                
    GC.Collect();//垃圾回收
    }
    #endregion#region 从XML导入到Dataset/**//// <summary>
    /// 从选择的XML文件导入
    /// </summary>
    /// <returns>DataSet</returns>
    public DataSet ImportFromXML()
    {
    DataSet ds=new DataSet();
    System.Windows.Forms.OpenFileDialog openFileDlg=new System.Windows.Forms.OpenFileDialog();
    openFileDlg.DefaultExt="xml";
    openFileDlg.Filter= "xml文件 (*.xml)|*.xml";
    if (openFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    try{ds.ReadXml(openFileDlg.FileName,System.Data.XmlReadMode.ReadSchema);}
    catch{}
    return ds;
    }
    /**//// <summary>
    /// 从指定的XML文件导入
    /// </summary>
    /// <param name="strFileName">XML文件名</param>
    /// <returns></returns>
    public DataSet ImportFromXML(string strFileName)
    {
    if (strFileName=="")
    return null;
    DataSet ds=new DataSet();
    try{ds.ReadXml(strFileName,System.Data.XmlReadMode.ReadSchema);}
    catch{}
    return ds;
    }
            
    #endregion#region 从DataSet导出到XML
    /**//// <summary>
    /// 导出指定的XML文件
    /// </summary>
    /// <param name="ds">要导出的DataSet</param>
    /// <param name="strXMLFileName">要导出的XML文件名</param>
    public void ExportToXML(DataSet ds,string strXMLFileName)
    {
    if (ds.Tables.Count==0 || strXMLFileName=="") return;
    doExportXML(ds,strXMLFileName);
    }
    /**//// <summary>
    /// 导出用户选择的XML文件
    /// </summary>
    /// <param name="ds">DataSet</param>
    public void ExportToXML(DataSet ds)
    {
    System.Windows.Forms.SaveFileDialog saveFileDlg=new System.Windows.Forms.SaveFileDialog(); 
    saveFileDlg.DefaultExt="xml";
    saveFileDlg.Filter= "xml文件 (*.xml)|*.xml";
    if (saveFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    doExportXML(ds,saveFileDlg.FileName);
    }/**//// <summary>
    /// 执行导出
    /// </summary>
    /// <param name="ds">要导出的DataSet</param>
    /// <param name="strExcelFileName">要导出的XML文件名</param>
    private void doExportXML(DataSet ds,string strXMLFileName)
    {
    try
    {ds.WriteXml(strXMLFileName,System.Data.XmlWriteMode.WriteSchema );}
    catch(Exception ex)
    {System.Windows.Forms.MessageBox.Show(ex.Message,"Errol") ;}    
    }#endregion
    }
    }
      

  3.   

    zxf_hay(sjh) ( ) 的是可以達到要求﹐可樓主好象并不想引用Com控件﹐關于這一點。期待高人出手。
    作個記號先。﹗
      

  4.   

    當成文本寫入,asp寫過。
    Function ExportToFile(strExcelFile,table)
      set fso=server.createobject("scripting.filesystemobject") 
      if fso.fileExists(strExcelFile) then fso.deletefile strExcelFile
      Set xslFile = fso.CreateTextFile(strExcelFile , true) 
      xslFile.WriteLine(table) 
      xslFile.Close 
      set fso=nothing 
        End function
    自己轉換吧。
      

  5.   

    各位大虾.真的不是小气...实在对不起....前面很多分...都浪费了.开了帖子没人理睬...这是CSDN每天只给我10分我的存的分早就用光了...
      

  6.   

    http://www.cnblogs.com/Bonny.Wong/archive/2005/01/29/99387.html