microsoft.office.interop导出到excel

时间:2015-07-07 08:36:53

标签: c# sql sql-server office-interop com-interop

我正在尝试使用Microsoft.Office.Interop.Excel从sql server数据库导出到excel;

但是我收到了一个错误:

  

microsoft.office.interop.excel.application不包含   '工作簿的定义'没有扩展方法'工作簿'

我也添加了所有必需的引用。请让我知道如何解决这个问题。

P.S-也为SaveAs获得相同的错误。

void ExportToExcel(string sqlquery, string filename)
        {
            Cursor.Current = Cursors.WaitCursor;
            SqlConnection cnn;
            string connectionString = null;
            string sql = null;
            string data = null;
            int i = 0;
            int j = 0;

            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.ApplicationClass();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            connectionString = "Data Source=HULMOSSPROD;Initial Catalog=" + cbx_Settings.Text + ";User Id=mosssa;Password=Unilever123;";
            cnn = new SqlConnection(connectionString);
            cnn.Open();
            sql = sqlquery;
            SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
            DataSet ds = new DataSet();
            dscmd.Fill(ds);


            //==============================================================================================================
            string strLine;

            SqlCommand cmd = new SqlCommand(sqlquery, cnn);
            SqlDataReader dr;
            dr = cmd.ExecuteReader();

            //Initialize the string that is used to build the file.
            strLine = "";

            //Enumerate the field names and the records that are used to build 
            //the file.
            for (int m = 0; m < 1; m++)
            {
                for (int k = 0; k <= dr.FieldCount - 1; k++)
                {

                    strLine = dr.GetName(k).ToString();
                    //xlWorkSheet.Cells[m + 1, k + 1] = strLine;

                }
            }
            //==============================================================================================================


            for (i = 1; i <= ds.Tables[0].Rows.Count; i++)
            {
                for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
                {
                    data = ds.Tables[0].Rows[i - 1].ItemArray[j].ToString();
                    //xlWorkSheet.Cells[i + 1, j + 1] = data;
                }
            }



            xlWorkBook.SaveAs("C:\\80IB_Reports\\" + filename, Excel.XlFileFormat.xlWorkbookDefault, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
            cnn.Close();

            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);
            Cursor.Current = Cursors.Default;

            MessageBox.Show("Export Successful. You can find the file at C:\\80IB_Reports");

        }

2 个答案:

答案 0 :(得分:0)

    StreamWriter sw = new StreamWriter(Response.OutputStream);

    try
    {
        conn.Open();
        OracleCommand cmd = new OracleCommand(strQuery);
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;
        DataSet ds = new DataSet();
        OracleDataAdapter adapter = new OracleDataAdapter(cmd);
        adapter.Fill(ds);

        foreach (DataColumn dc in ds.Tables[0].Columns)
        {
            sw.Write(dc.ColumnName);
            sw.Write("\t");
        }
        sw.WriteLine("");
        foreach (DataRow dr in ds.Tables[0].Rows)
        {

            int colindex = 0;
            foreach (DataColumn dc in ds.Tables[0].Columns)
            {
                colindex++;
                sw.Write(dr[colindex - 1].ToString());
                sw.Write("\t");

            }
            sw.WriteLine("");
        }
    }
    catch
    {

    }
    finally
    {
        sw.Close();
        conn.Close();
    }

答案 1 :(得分:0)

像这样创建应用程序实例

   Microsoft.Office.Interop.Excel.Application xlApp= new Microsoft.Office.Interop.Excel.Application();

像这样添加工作簿

Microsoft.Office.Interop.Excel.Workbook xlWorkBook= xlApp.Application.Workbooks.Add();

向工作簿添加新工作表

        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet= xlWorkBook.Sheets.Add();