2017-01-25 5 views
-1

C#でデータベースからExcelにデータを保存する際にエラーが発生します。ボタンをクリックすると、私のExcelファイルに1つのデータしか得られませんwelcome.xlsxこのエラーを修正するように私に教えてください。ありがとう System.Runtime.InteropServices.COMException(0x800A03EC):F:\のBasicGridView.btnclick(Object sender、EventArgs e)のMicrosoft.Office.Interop.Excel._Worksheet.set_Name(String RHS)のHRESULT:0x800A03ECからの例外shubham \ ESINの\ ESINの\のDefault.aspx.cs:ライン73asp.netでデータベースからデータをエクスポートする

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Web.Configuration; 
using System.Data.SqlClient; 
using System.Data; 

public partial class BasicGridView : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.IsPostBack) 
     { 
      string connectionString = "server=Myserver; database=northwind; user id=sasa; password=123;integrated security=false "; 

      SqlConnection con = new SqlConnection(connectionString); 
      SqlCommand cmd = new SqlCommand("SELECT * FROM uregistration", con); 

      SqlDataAdapter sda = new SqlDataAdapter(); 
      sda.SelectCommand = cmd; 
      DataTable dt = new DataTable(); 
      dt.TableName = "uregistration"; 
      sda.Fill(dt); 

      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 

    } 
    protected void btnclick(object sender, EventArgs e) 
    { 

     string connectionString = "server=Myserver; database=northwind; user id=sa; password=123;integrated security=false "; 

     SqlConnection con = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand("SELECT * FROM uregistration", con); 

     SqlDataAdapter sda = new SqlDataAdapter(); 
     sda.SelectCommand = cmd; 
     DataTable dt = new DataTable(); 

     sda.Fill(dt); 

     object misValue = System.Reflection.Missing.Value; 
     Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); 
     app.Visible = false; 


     Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); 
     Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet; 

     for(int i =0;i<dt.Columns.Count;i++) 
     { 
      ws.Cells[1, i + 1] = dt.Columns[i].ColumnName; 
     } 

     for(int i=0; i < dt.Rows.Count; i++) 
     { 
      for(int j=0; j < dt.Columns.Count; j++) 
      { 
       ws.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString(); 
      } 
     } 

     try { 
      ws.Name = dt.TableName; 
     }catch(Exception ex) 
     { 
      lbl.Text = ex.ToString(); 
     } 
     wb.SaveAs("welcome2.xl", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,misValue,misValue,misValue,misValue,misValue); 

     wb.Close(true, misValue, misValue); 
     app.Quit(); 
    } 
} 
+0

希望[this](http://stackoverflow.com/questions/7099770/hresult-0x800a03ec-on-worksheet-range)は、 –

+0

の方がこれをより使いやすくするhttp://knowlton-group.com/using-ssis -to-export-data-to-excel/ – Karthikeyan

+0

たとえば、[EPPlus](http://stackoverflow.com/documentation/epplus/drafts/98280)のようなExcelファイルを作成するための特別なライブラリの使用を開始します。 – VDWWD

答えて

0

私は一つだけ修正してコードをテストしてみた、それは例外なく

と、それはExcelシート内のすべてのフェッチされたデータを示しても動作します
wb.SaveAs("welcome2.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,misValue,misValue,misValue,misValue,misValue); 

拡張子 ".xl"が間違っていました。 同じ名前と同じ宛先のファイルが既に存在するときにファイルを書き込むときに例外が発生します。キャンセルを選択すると、そのファイルを上書きするかどうかを尋ねるダイアログが表示されます。例外。既存のファイルが存在するかどうかを確認して、既存のファイルの名前を変更/削除し、新しいファイルを書き込む必要があります。 お手伝いをしてください。

+0

ご回答ありがとうございました。私のExcelファイルにデータがありません –

+0

ありがとうございました:-) –

+0

私の回答があなたの問題解決に役立った場合は、それを回答として選択し、他の人を助けてください。 –

関連する問題