public static void ExportarExcelDataTable(DataTable dt,string RutaExcel) { const string FIELDSEPARATOR = "\t"; const string ROWSEPARATOR = "\n"; StringBuilder output = new StringBuilder(); // Escribir encabezados foreach (DataColumn dc in dt.Columns) { output.Append(dc.ColumnName); output.Append(FIELDSEPARATOR); } output.Append(ROWSEPARATOR); foreach (DataRow item in dt.Rows) { foreach (object value in item.ItemArray) { output.Append(value.ToString().Replace('\n',' ').Replace('\r',' ').Replace('.',',')); output.Append(FIELDSEPARATOR); } // Escribir una línea de registro output.Append(ROWSEPARATOR); } // Valor de retorno // output.ToString(); StreamWriter sw = new StreamWriter(RutaExcel); sw.Write(output.ToString()); sw.Close(); }
Buscar
viernes, 12 de marzo de 2010
Exportar DataTable a Excel
lunes, 20 de abril de 2009
Redondeo por múltiplos(Excel, Sql)
REDONDEAR(N/m;0)*m.
Ejemplo :
MROUND(5,3)
Resultado:
6
Esto es una función que hace lo mismo pero en SQL:
Uso:
select dbo.RoundMult(5,3)
CREATE FUNCTION [dbo].[RoundMult] (@Valor numeric(18,2),@Multiplo Numeric(18,2))
RETURNS nvarchar(50)
WITH EXECUTE AS CALLER
AS
BEGIN
declare @Residuo numeric(18,0)
DECLARE @ValASumar numeric(18,0)
set @Residuo=@Valor%@Multiplo
IF @Residuo=0
BEGIN
return @Valor
END
ELSE
set @ValASumar= @Multiplo-@Residuo
return @Valor+@ValASumar
END
jueves, 26 de junio de 2008
Copiar hojas de Excel con macros (VBA)
Este código nos resulto muy útil, cuando teníamos que generar reportes en Excel con macros, nosotros generábamos el reporte y copiábamos las hojas en otro Excel para que el usuario trabajara con el
Sub CopiarHoja(Hoja As Integer)
Dim AppExceldestino As Object
Set AppExceldestino = New Excel.Application
AppExceldestino.Workbooks.Add
AppExceldestino.Workbooks(1).Activate
Dim i As Integer
Application.CutCopyMode = False
For i = 1 To Hoja
ActiveWorkbook.Sheets(i).Activate
AppExceldestino.Sheets(i).Select
ActiveWorkbook.ActiveSheet.Range("A1:A1").Select 'se para en la primera fila
ActiveWorkbook.ActiveSheet.Range("A1:U65").Select 'se selecciona el rango de la hoja a copiar
ActiveWorkbook.ActiveSheet.Application.CutCopyMode = False
Selection.Copy 'se copia el rango selecionado
'Abro el destino y pego su contenido
AppExceldestino.ActiveWorkbook.ActiveSheet.Cells(1, 1).Select 'Selecciono la primera linea del documento nuevo
AppExceldestino.ActiveWorkbook.ActiveSheet.Paste 'Lo pego
ActiveSheet.Select
Selection.Copy
AppExceldestino.ActiveSheet.Paste
AppExceldestino.Visible = True
Next
AppExceldestino.Sheets(3).Delete
AppExceldestino.Sheets(1).Activate
AppExceldestino.ActiveWorkbook.SaveAs Filename:="Ruta", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False 'Se guarda el archivo con el nombre "Ruta"
AppExceldestino.Workbooks.Close ' Se cierra
ActiveWorkbook.Sheets(1).ActivateActiveWorkbook.Activate
End Sub