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 originalprivate bool CreateExcel(DataSet dsData, string saveBook)
{
xlApp=new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
try
{
int index = 1;
foreach (DataTable dt in dsData.Tables)
{
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(index);
xlWorkSheet.Name = dt.TableName;
for (int col = 0; col < dt.Columns.Count; col++)
{
string colName = Convert.ToChar(65 + col).ToString() + "1";
chartRange = xlWorkSheet.get_Range(colName, colName);
chartRange.FormulaR1C1 = dt.Columns[col].ColumnName;
chartRange.Font.Color = System.Drawing.Color.Black;
chartRange.Interior.Color = System.Drawing.Color.FromArgb(128, 128, 128).ToArgb();
chartRange.Borders.LineStyle = System.Windows.Forms.BorderStyle.FixedSingle;
}
for(int row=0; row<dt.Rows.Count;row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
xlWorkSheet.Cells[row + 2, Convert.ToChar(65 + col).ToString()] = dt.Rows[row][col].ToString();
if (eventProcess != null)
eventProcess();
}
}
chartRange = xlWorkSheet.get_Range("A1", Convert.ToChar(65 + dsData.Tables[index-1].Columns.Count).ToString() + (dsData.Tables[index-1].Rows.Count+1).ToString());
chartRange.Columns.AutoFit();
index++;
}
xlWorkBook.SaveAs(saveBook, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue,misValue, misValue,
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
return true;
}
catch(System.Runtime.InteropServices.COMException)
{
return false;
}
finally
{
xlWorkBook.Close(false, misValue, misValue);
xlApp.Quit();
this.ReleaseObject(xlWorkBook);
this.ReleaseObject(xlApp);
}
}
Espero que te Sirva