Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/05/2011, 09:48
Avatar de giovani_loera
giovani_loera
 
Fecha de Ingreso: mayo-2011
Ubicación: Tijuana
Mensajes: 225
Antigüedad: 13 años
Puntos: 21
Respuesta: guardar datagriedview como txt o en excel

Este metodo, toma como parametros un dataSet y donde se guardara el archivo.
El metodo recorreo las tablas del DataSet, primero pone el nombre a las hojas y despues va poniendo las columnas.
Una vez esto empezara agreagar los datos por cada DataTable del DataSet creara una hoja en el Excel.

al ultimo de agregar los campos, le pondra tamaño a las columnas.

Código C#:
Ver original
  1. private bool CreateExcel(DataSet dsData, string saveBook)
  2.         {
  3.             xlApp=new Excel.Application();            
  4.             xlWorkBook = xlApp.Workbooks.Add(misValue);
  5.             try
  6.             {
  7.                 int index = 1;
  8.                 foreach (DataTable dt in dsData.Tables)
  9.                 {
  10.                     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(index);
  11.                     xlWorkSheet.Name = dt.TableName;
  12.  
  13.                     for (int col = 0; col < dt.Columns.Count; col++)
  14.                     {
  15.                         string colName = Convert.ToChar(65 + col).ToString() + "1";
  16.                         chartRange = xlWorkSheet.get_Range(colName, colName);
  17.                         chartRange.FormulaR1C1 = dt.Columns[col].ColumnName;
  18.                         chartRange.Font.Color = System.Drawing.Color.Black;
  19.                         chartRange.Interior.Color = System.Drawing.Color.FromArgb(128, 128, 128).ToArgb();
  20.                         chartRange.Borders.LineStyle = System.Windows.Forms.BorderStyle.FixedSingle;
  21.                        
  22.                     }
  23.                     for(int row=0; row<dt.Rows.Count;row++)
  24.                     {
  25.                         for (int col = 0; col < dt.Columns.Count; col++)
  26.                         {
  27.                             xlWorkSheet.Cells[row + 2, Convert.ToChar(65 + col).ToString()] = dt.Rows[row][col].ToString();
  28.                             if (eventProcess != null)
  29.                                 eventProcess();
  30.                         }
  31.                     }
  32.                     chartRange = xlWorkSheet.get_Range("A1", Convert.ToChar(65 + dsData.Tables[index-1].Columns.Count).ToString() + (dsData.Tables[index-1].Rows.Count+1).ToString());
  33.                     chartRange.Columns.AutoFit();
  34.                     index++;
  35.                 }
  36.                 xlWorkBook.SaveAs(saveBook, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue,misValue, misValue,
  37.                     Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
  38.                 return true;
  39.             }
  40.             catch(System.Runtime.InteropServices.COMException)
  41.             {
  42.                 return false;
  43.             }
  44.             finally
  45.             {
  46.                 xlWorkBook.Close(false, misValue, misValue);
  47.                 xlApp.Quit();
  48.                 this.ReleaseObject(xlWorkBook);
  49.                 this.ReleaseObject(xlApp);
  50.             }
  51.         }



Espero que te Sirva