2011-11-16 93 views
9

Cómo crear un archivo Excel con varias hojas desde el DataSet usando C#. He creado con éxito un archivo Excel con una sola hoja. Pero no puedo hacer eso para varias hojas.Cómo crear un archivo Excel con varias hojas desde el DataSet usando C#

Saludos Harsh

+0

Supongo que depende de cómo esté buscando crear el archivo de Excel. ¿Estás buscando crear una página por tabla en el conjunto de datos? – KreepN

+0

Probablemente haya cambiado el comportamiento predeterminado de Excel. Consulte http://stackoverflow.com/questions/8066189/c-sharp-create-excel-workbook-with-1-sheet-by-default – JMax

+0

Qué tecnología o componente está utilizando para la hoja suelta que ya está creando ? –

Respuesta

15

He aquí una sencilla clase C# que programáticamente crea un libro de Excel y agrega dos hojas a la misma, y ​​luego rellena las dos hojas. Por último, se guarda el libro en un archivo en el directorio raíz de la aplicación para que pueda inspeccionar los resultados ...

public class Tyburn1 
{ 
    object missing = Type.Missing; 
    public Tyburn1() 
    { 
     Excel.Application oXL = new Excel.Application(); 
     oXL.Visible = false; 
     Excel.Workbook oWB = oXL.Workbooks.Add(missing); 
     Excel.Worksheet oSheet = oWB.ActiveSheet as Excel.Worksheet; 
     oSheet.Name = "The first sheet"; 
     oSheet.Cells[1, 1] = "Something"; 
     Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
         as Excel.Worksheet; 
     oSheet2.Name = "The second sheet"; 
     oSheet2.Cells[1, 1] = "Something completely different"; 
     string fileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)   
           + "\\SoSample.xlsx"; 
     oWB.SaveAs(fileName, Excel.XlFileFormat.xlOpenXMLWorkbook, 
      missing, missing, missing, missing, 
      Excel.XlSaveAsAccessMode.xlNoChange, 
      missing, missing, missing, missing, missing); 
     oWB.Close(missing, missing, missing); 
     oXL.UserControl = true; 
     oXL.Quit(); 
    } 
} 

Para ello, sería necesario añadir una referencia a Microsoft.Office.Interop.Excel a su proyecto (puede haberlo hecho ya que está creando una hoja).

El comunicado añade que la segunda hoja es ...

Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
          as Excel.Worksheet; 

el '1' argumento especifica una sola hoja, y puede ser más si desea agregar varias hojas a la vez.

Nota final: la declaración oXL.Visible = false; le dice a Excel que comience en modo silencioso.

+0

Aparece un error en oXL.Quit(); cada vez. Excel Undantagskod: xc0000005 Felförskjutning: 0x000000000000f993. El error se pone en el registro de eventos de la máquina. ¿También necesitas los arumgentes faltantes en C# 4? ¿No es suficiente con oWB dinámico = excelApplication.Workbooks.Add(); –

+0

¿Alguna posibilidad de traducir su mensaje de error? –

+0

Gran respuesta. muchas gracias –

Cuestiones relacionadas