2017-01-25 6 views
-1

Ich erhalte einen Fehler beim Speichern von Daten in Excel aus der Datenbank mit C#. Wenn ich in den Button klicke, erhalte ich nur eine Datei in meiner Excel-Datei welcome.xlsx Bitte schlagen Sie mir vor, diesen Fehler zu beheben. danke System.Runtime.InteropServices.COMException (0x800A03EC): Ausnahme von HRESULT: 0x800A03EC bei Microsoft.Office.Interop.Excel._Worksheet.set_Name (String RHS) bei BasicGridView.btnclick (Object sender, EventArgs e) in F: \ shubham \ esin \ esin \ Default.aspx.cs: Linie 73Exportieren von Daten aus der Datenbank zu Excel in asp.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

Hope [this] (http://stackoverflow.com/questions/7099770/hresult-0x800a03ec-on-worksheet-range) hilft –

+0

ist es besser, diese http://knowlton-group.com/using-ssis zu verwenden -to-export-data-to-excel/ – Karthikeyan

+0

Starten Sie mit einer spezialisierten Bibliothek zum Erstellen von Excel-Dateien, wie zum Beispiel [EPPlus] (http://stackoverflow.com/documentation/epplus/drafts/98280). – VDWWD

Antwort

0

ich habe Ihren Code mit nur einer Änderung getestet und es funktioniert auch zeigt es alle abgerufenen Daten in Excel-Blatt ohne Ausnahme

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); 

Die Erweiterung ".xl" war falsch. Die Ausnahme tritt auf, wenn die Datei geschrieben wird, während die Datei mit dem gleichen Namen und demselben Ziel bereits vorhanden ist. In diesem Dialogfeld werden Sie aufgefordert, diese Datei mit Ja, Nein, Abbrechen zu überschreiben, wenn Sie Abbrechen wählen Ausnahme. Sie sollten prüfen, ob die Datei bereits existiert, dann die vorhandene Datei umbenennen/löschen und dann eine neue Datei schreiben. Hoffe es hilft.

+0

danke für Ihre Antwort, ich bekomme keine Daten in meiner Excel-Datei keinen Vorschlag –

+0

danke jetzt funktioniert es :-) –

+0

Wenn meine Antwort Ihnen geholfen hat, Ihr Problem zu lösen, dann wählen Sie es als Antwort und anderen helfen. –

Verwandte Themen