请问在.net中如何打开一个已有的excel文件

解决方案 »

  1.   

    using System.Data.OleDb;
    using Excel; 
    private void Connection()//连接要读取数据的Excel表
    {
    try
    {
    string fileName;
    DataSet myDataSet= new DataSet();
    OpenFileDialog fileChooser=new OpenFileDialog();
    DialogResult result1=fileChooser.ShowDialog();
    fileChooser.CheckFileExists=false;
    if(result1==DialogResult.Cancel)
    {
    return;
    }
    fileName=fileChooser.FileName;
    if(fileName==""||fileName==null)
    {
    MessageBox.Show("不合法的文件名!","错误信息",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    else
    {
    output=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);
    ArrayList ary=new ArrayList(); 
    GetExecl(ref ary, fileName);
    string oleDBConnString = String.Empty;
    oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
    oleDBConnString += "Data Source=";
    oleDBConnString += fileName;
    oleDBConnString += ";Extended Properties=Excel 8.0;";
    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(oleDBConnString);//连接
    conn.Close();
    conn.Open();
    string str="SELECT * FROM "+"["+ary[0].ToString()+"$"+"]";
    OleDbDataAdapter myCommand = new OleDbDataAdapter(str,conn);
    myCommand.Fill(myDataSet,"table1");//将数据填充到数据集合里
        conn.Close();
    output.Close();
    GC.Collect();
    }private static ArrayList GetExecl(ref ArrayList ary,string Url)//获得Excel文件中的第一个表的名称
    {
    string filepath=@Url;
    Object refmissing = System.Reflection.Missing.Value;
    Excel._Application exc = new Excel.ApplicationClass();
    exc.Visible = false;
    Excel.Workbooks workbooks = exc.Workbooks;
    workbooks.Open(filepath,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing);
    Excel.Worksheet sheet = (Excel.Worksheet)exc.Worksheets.get_Item(1);
    ary.Add(sheet.Name.ToString());
    exc.Application.Quit();
    workbooks.Close();
    GC.Collect();
    return ary;
    }