Domanda

qual è il modo migliore per esportare un Datagrid per eccellere? Non ho alcuna esperienza nell'esportazione di Datagrid per eccellere, quindi voglio sapere come esportate Datagrid per eccellere. ho letto che ci sono molti modi, ma sto pensando di fare semplicemente un eccellente esportazione eccellente per la funzione datagrid. Sto usando asp.net C #

evviva ..

È stato utile?

Soluzione

Il modo più semplice è semplicemente scrivere csv o html (in particolare, <table><tr><td>...</td></tr>...</table>) sull'output e semplicemente fingere che sia in formato Excel tramite l'intestazione del tipo di contenuto. Excel caricherà felicemente entrambi; CSV è più semplice ...

Ecco un esempio simile (in realtà prende un IEnumerable, ma sarebbe simile da qualsiasi sorgente (come un DataTable, passando in rassegna le righe).

        public static void WriteCsv(string[] headers, IEnumerable<string[]> data, string filename)
        {
            if (data == null) throw new ArgumentNullException("data");
            if (string.IsNullOrEmpty(filename)) filename = "export.csv";

            HttpResponse resp = System.Web.HttpContext.Current.Response;
            resp.Clear();
            // remove this line if you don't want to prompt the user to save the file
            resp.AddHeader("Content-Disposition", "attachment;filename=" + filename);
            // if not saving, try: "application/ms-excel"
            resp.ContentType = "text/csv";
            string csv = GetCsv(headers, data);
            byte[] buffer = resp.ContentEncoding.GetBytes(csv);
            resp.AddHeader("Content-Length", buffer.Length.ToString());
            resp.BinaryWrite(buffer);
            resp.End();
        }
        static void WriteRow(string[] row, StringBuilder destination)
        {
            if (row == null) return;
            int fields = row.Length;
            for (int i = 0; i < fields; i++)
            {
                string field = row[i];
                if (i > 0)
                {
                    destination.Append(',');
                }
                if (string.IsNullOrEmpty(field)) continue; // empty field

                bool quote = false;
                if (field.Contains("\""))
                {
                    // if contains quotes, then needs quoting and escaping
                    quote = true;
                    field = field.Replace("\"", "\"\"");
                }
                else
                {
                    // commas, line-breaks, and leading-trailing space also require quoting
                    if (field.Contains(",") || field.Contains("\n") || field.Contains("\r")
                        || field.StartsWith(" ") || field.EndsWith(" "))
                    {
                        quote = true;
                    }
                }
                if (quote)
                {
                    destination.Append('\"');
                    destination.Append(field);
                    destination.Append('\"');
                }
                else
                {
                    destination.Append(field);
                }

            }
            destination.AppendLine();
        }
        static string GetCsv(string[] headers, IEnumerable<string[]> data)
        {
            StringBuilder sb = new StringBuilder();
            if (data == null) throw new ArgumentNullException("data");
            WriteRow(headers, sb);
            foreach (string[] row in data)
            {
                WriteRow(row, sb);

            }
            return sb.ToString();
        }

Altri suggerimenti

Puoi farlo in questo modo:

private void ExportButton_Click(object sender, System.EventArgs e)
{
  Response.Clear();
  Response.Buffer = true;
  Response.ContentType = "application/vnd.ms-excel";
  Response.Charset = "";
  this.EnableViewState = false;
  System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
 System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
  this.ClearControls(dataGrid);
  dataGrid.RenderControl(oHtmlTextWriter);
  Response.Write(oStringWriter.ToString());
  Response.End();
}

Esempio completo qui

Esportazione di valori in Excel o Word o PDF Check http://techdotnets.blogspot.com/

SpreadsheetGear per .NET lo farà.

Puoi vedere esempi ASP.NET live con codice sorgente C # e VB qui . Molti di questi esempi dimostrano la conversione di un DataSet o DataTable in Excel e puoi facilmente ottenere un DataSet o DataTable da un DataGrid. Puoi scaricare la versione di prova gratuita qui se vuoi provarla tu stesso.

Disclaimer: possiedo SpreadsheetGear LLC

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top