Mensajes [4] - Enviado el Martes 21 de Abril de 2009 a las 12:07hs
Hola!!
Necesito guardar informacion de C# a Excel y mandar a celdas especificas esa informacion
GRACIAS!!!
Mensajes [5] - Enviado el Martes 28 de Abril de 2009 a las 21:45hs
. Las librer?as a implementar son:
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
2. Variables a utilizar (esto es de cada qui?n, de acuerdo a lo que se vaya a realizar):
string filename, filePath;
3. Este paso es s?lo para los que tienen EXCEL en ingl?s y el Sistema Operativo en otro idioma, en mi caso tengo EXCEL 2003 en ingl?s y Windows XP Profesional en Espa?ol. Se deben colocar estas l?neas para solucionar un "bug" que trae el Office:
System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCultu re;
System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");
4. Se crea la instancia de la aplicaci?n:
oXL = new Excel.Application();
5. Lo siguiente es abrir el cuadro de di?logo para salvar el archivo, se hace con la siguiente l?nea, el primer par?metro es el nombre sugerido que le queramos dar, el segundo es el filtro de extensiones, el tercero es el ?ndice del filtro (cual estar? marcado), el cuarto es el t?tulo de la ventana y el quinto es el nombre del bot?n (s?lo funciona con Macintosh). El Missing.Value es usado para llenar el campo de los par?metros opcionales y que no van a ser utilzados, se debe hacer as? porque en C# no se pueden omitir.
filePath = oXL.GetSaveAsFilename("PRUEBA", "Archivos de Excel (*.xls), *.xls", 1, "Guardar prueba", Missing.Value).ToString();
6. Se crea el libro y la hoja, se ejecuta el c?digo que necesitemos implementar en el archivo (si es que necesitamos hacerle algo):
oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value) ); // crear el Workbook
oSheet = (Excel._Worksheet)oWB.ActiveSheet; // crear la Hoja
oSheet.Cells[1, 1] = "HOLA"; //Columna,Fila
oSheet.Cells[1, 2] = "MUNDO;
7. Algo de formato:
oSheet.Name = "Ingreso de Equipo"; //Nombre de la hora
oSheet.get_Range(A1, A2).Font.Bold = true; //Letra negrita
oSheet.get_Range(A1, A2).Interior.ColorIndex = 9; //Color de Fondo, 9 es rojo oscuro, entre 0-56
oSheet.get_Range(A1, A2).Font.ColorIndex = 2; //Color de letra, 2 es blanco, entre 0-56
oSheet.get_Range(A1, A2).WrapText = true; //Respetar ancho de la celda
oSheet.get_Range(A1, A2).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//Alineaci?n horizontal
oSheet.get_Range(A1, A2).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; //Alineaci?n vertical
oSheet.get_Range(A1, A2).ColumnWidth = 20; //Ancho de la columna
oSheet.get_Range(A1, A2).BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlMedium, Excel.XlColorIndex.xlColorIndexAutomatic, Excel.XlColorIndex.xlColorIndexAutomatic); //Borde
//Hay muchas opciones, s?lo es de probar hasta conseguir lo que necesitemos.
8. Si se desea visualizar el archivo se agregan estas l?neas, si no, se puede omitir sin problemas.
oXL.Visible = true;
oXL.UserControl = true;
9. Guardamos el archivo y lo cerramos
oXL.ActiveWorkbook.Close(true, filePath, Type.Missing);
oXL.Quit();
oXL = null;
10. Limpiamos cualquier proceso de Excel que haya quedado abierto luego de crear el archivo y regeneramos el archivo Culture (el del bug, para dejarlo como al inicio).
System.Threading.Thread.CurrentThread.CurrentCultu re = CurrentCI; // restaura el CultureInfo
System.Diagnostics.Process[] myProcesses;
myProcesses = System.Diagnostics.Process.GetProcessesByName("EXC EL");
foreach (System.Diagnostics.Process instance in myProcesses) {
instance.CloseMainWindow();
instance.Kill();
instance.Close();
}