怎样导入一个excel文件到excel控件里面 and 从excel控件导出成一个excel文件
用C#来实现,谢谢

解决方案 »

  1.   

    //string path1;
    this.openFileDialog1.Filter="excel文件(*.xls)|*.xls";
    this.openFileDialog1.Title="打开excel文件";
    this.openFileDialog1.ShowDialog();
    path1=this.openFileDialog1.FileName;
    //设置空值
    object objMissing=System.Reflection.Missing.Value;
               //打开excel文件
     my=new Excel.ApplicationClass();
             
    my.Visible=true;//打开工作簿
    Excel.Workbook mybook=my.Workbooks.Open(path1.Trim(),objMissing,objMissing, objMissing, 
    objMissing, objMissing, objMissing, 
    objMissing, objMissing, objMissing, 
    objMissing, objMissing, objMissing);Excel.Worksheet mysheet=(Excel.Worksheet)mybook.Worksheets.get_Item(1);
      

  2.   

    导入:
    Excel.Application myExcel=new Excel.Application();
    myExcel.Visible=false;
    foreach(string strFileName in this.ofdData.FileNames)
    {
    string strSQL="";
    Excel.Workbook wb=myExcel.Workbooks.Open(strFileName,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
    wb.Save();
    foreach(Excel.Worksheet ws in wb.Worksheets)
    {
    strSQL="select * from ["+ws.Name+"$];";
    #region 数据库方式
    System.Data.OleDb.OleDbConnection oc=new OleDbConnection();
    oc.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + strFileName + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
    System.Data.OleDb.OleDbDataAdapter oda=new OleDbDataAdapter("select * from ["+ws.Name+"$]",oc);
    myExcel.Quit();
    try
    {
    oc.Open();
    oda.Fill(dsPhone1,"tabPhone");
    }
    catch
    {
    System.Windows.Forms.DialogResult dr=MessageBox.Show("数据文件"+strFileName+"导入失败,该数据文件格式与之前文件格式不相同,是否要继续数据导入?","导入失败",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
    if(dr==DialogResult.No)
    {
    frmInput.Close();
    return;
    }
    }
    this.gexPhone.SetDataBinding(dsPhone1,"tabPhone");
    oc.Close();
    #endregion
    } myExcel.Quit();
    }
      

  3.   

    导出:
    Excel.Application myExcel=new Excel.Application();
    myExcel.Application.Workbooks.Add(true);
    int intColID=0;
    double intCost=0,intmin=0;
    for(int i=0;i<this.gexPhone.Tables["tabPhone"].Columns.Count;i++)
    {
    if(this.gexPhone.Tables["tabPhone"].Columns[i].Visible==false)
    continue;
    myExcel.Cells[1,intColID+1]=this.gexPhone.Tables["tabPhone"].Columns[i].Caption;
    for(int j=0;j<this.gexPhone.RowCount;j++)
    {
    if(this.gexPhone.Tables["tabPhone"].Columns[i].Caption.Trim()=="cost")
    intCost+=double.Parse(this.gexPhone.GetRow(j).Cells[i].Text.ToString().Trim());//统计时间
    if(this.gexPhone.Tables["tabPhone"].Columns[i].Caption.Trim()=="duration_in_min")
    intmin+=double.Parse(this.gexPhone.GetRow(j).Cells[i].Text.ToString().Trim());//统计时间(分)
    try
    {
    Int16 intValue=Int16.Parse(this.gexPhone.GetRow(j).Cells[i].Text.ToString());
    myExcel.Cells[j+2,intColID+1]=this.gexPhone.GetRow(j).Cells[i].Text.ToString();
    }
    catch
    {
    myExcel.Cells[j+2,intColID+1]="'"+this.gexPhone.GetRow(j).Cells[i].Text.ToString();
    }
    }
    if(this.gexPhone.Tables["tabPhone"].Columns[i].Caption.Trim()=="cost")
    myExcel.Cells[this.gexPhone.RowCount+2,intColID+1]=intCost;
    if(this.gexPhone.Tables["tabPhone"].Columns[i].Caption.Trim()=="duration_in_min")
    myExcel.Cells[this.gexPhone.RowCount+2,intColID+1]=intmin;
    intColID++;
    }
    Excel.Range r=myExcel.Columns;
    Excel.Font font=r.Font;
    font.Size=10;
    myExcel.Quit();
      

  4.   

    不不不,我说错了是导入或导出spreadsheet这个控件
      

  5.   

    http://community.csdn.net/Expert/topic/3855/3855676.xml?temp=9.708804E-02
      

  6.   

    接楼主宝地,请问如何将Excel中的数据导入到Dataset中,作为Datagrid的数据源,另外还有该怎么考虑导入的内容和DataSet中主键重复的问题那?谢谢!