Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - almita

#21
si pone nomina.xls solo que se me fue y le puse nombree.xls

pero esto me lo manda con office 2007 y con 2003 me dice error de compilacion

porfis chicos me urge la ayuda no se que pueda ser ya quite la libreria  por que segun yo es para generarlo en 2003 pero sigue igual
#22
.NET (C#, VB.NET, ASP) / exportar a excel con vb.net
14 Septiembre 2010, 16:11 PM
Chicos buenos dias
tengo una funcion que obtuve de internet para exportar datos a excel con .net ademas de lo que me pasaron aqui pero tengo otro proble ma que no logro identificar o tal ves no estoy entendiendo bien como funciona, el chiste es que al habrirme el archivo me manda el siguiente error:

thread was being aborted

despues de esto me dice ya en excel: el archivo que intenta abrir nombre.xls tiene otro formato que el espesificado por la extensión del archivo compruebe que el archivo no esta daado y proceda de un origen de confianza an tes de habrirlo.

yo pence que era por que tenia intalado office 2007 y me baje a 2003 pero no funciona. tambien intente generarlo con .xlsx y no funciona alguien tiene alguna idea de que pueda ser. de cualquier manera les dejo la funcion.
Código (vbnet) [Seleccionar]


               Dim style As String = "<style>.text{mso-number-format:\@;}</style>"
               Response.Clear()
               Response.Buffer = True
               Response.AddHeader("content-disposition", "attachment; filename=nomina.xls")
               Response.ContentType = "application/excel"
               Dim sw As StringWriter = New StringWriter()
               Dim ioSw As New System.IO.StringWriter()
               Dim htw As New System.Web.UI.HtmlTextWriter(ioSw)
               GridView1.RenderControl(htw)
               Response.Output.Write(style & ioSw.ToString().Replace("td", "td class='text'"))
               Response.Flush()
               Response.End()


ayuda porfis que me urge mucho

Nota: cabe mencionar que agrege una libreria llamada Microsoft.Office.Interop.Excel.dll

gracias de antemano
#23
Hola chavos quisiera hacerles una pregunta y es que instale una maquina virtual con xp en win 7 y en la virtual  instale visual fox pro 9 para un proyecto que tengo pero tengo problemas para compilarlo, cabe notar que la compilación la estoy haciendo por la red que funciona bien en una maquina con xp no tengo problemas pero cuando intento compilarla con la virtual me marca un error como este.

c:/Administrador.../tem/ algo así como que me esta pidiendo una carpeta temporal en la que ponga el proyecto mientras esta compilando o algo así no entiendo bien el error, mañana que este en el trabajo pongo exactamente lo que me da de error pero si alguien tiene alguna idea se los agradeceré enormemente y la verdad me urge como tienen idea.

ayuda porfisssssss gracias por siempre responderme
#24
chavos  una pregunta para los que ya lo utilizaron en VB  sigo sin resolver mi duda y quiero ver si a ustedes ya les funciona que les respete los seros a la izquierda en Excel, el código que puse tal cual funciona perfecto pero el problema es que en mi Excel yo quiero  que me guarde 0001 en lugar de solo un 1 son cuentas contables que requiere se ponga tal cual. Alguien me puede apoyar u orientar de por donde puede estar el problema?
#25
ok muchas gracias deja lo checo pero de entrada no veo que tenga una columna donde pudieran tener esa bronca de los zeros a la izquierda pero deja lo veo mejor y de cualquier manera muchas gracias por responder
#26
Hola buenas noches chavos estoy atorada al querer dar formato de tipo texto en el excel que estoy generando en vb.net 2005 con framework 2 y el codigo que encontre en internet es el siguiente, quisiera ver si alguien me puede ayudar para ver de que manera puedo hacer que me respete los zeros a la izquierda en las columnas que tienen numeros por ejemplo que en lugar de que deje en la celda 1 me deje 0001 que es lo que trae la columna de mi datatable que es de typo string.
Código (vb.net) [Seleccionar]

' asi llamo la funcion que genera el excel
DataTableToExcel(CType(dt, DataTable))

'funcion que genera el excel
   Public Sub DataTableToExcel(ByVal pDataTable As DataTable)
       Dim vFileName As String = Path.GetTempFileName()

       FileOpen(1, vFileName, OpenMode.Output)
       Dim sb As String
       Dim dc As DataColumn
       For Each dc In pDataTable.Columns
           sb = dc.Caption & Microsoft.VisualBasic.ControlChars.Tab
       Next
       PrintLine(1, sb)
       Dim i As Integer = 0
       Dim dr As DataRow
       For Each dr In pDataTable.Rows
           i = 0
           sb = ""
           For Each dc In pDataTable.Columns
               If Not IsDBNull(dr(i)) Then
                   sb &= CStr(dr(i)) & Microsoft.VisualBasic.ControlChars.Tab
               Else
                   sb &= Microsoft.VisualBasic.ControlChars.Tab
               End If
               i += 1
           Next
           PrintLine(1, sb)
       Next
       FileClose(1)
       TextToExcel(vFileName)
   End Sub


'funcion que guarda el archivo
   Public Sub TextToExcel(ByVal pFileName As String)
       Dim vFormato As Excel.XlRangeAutoFormat
       Dim vCultura As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
       System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")

       Dim Exc As Excel.Application = New Excel.Application
       Exc.Workbooks.OpenText(pFileName, , , , Excel.XlTextQualifier.xlTextQualifierNone, , True)

       Dim Wb As Excel.Workbook = Exc.ActiveWorkbook
       Dim Ws As Excel.Worksheet = Wb.ActiveSheet

       vFormato = Excel.XlApplicationInternational.xlGeneralFormatName
       Ws.Range(Ws.Cells(1, 1), Ws.Cells(Ws.UsedRange.Rows.Count, Ws.UsedRange.Columns.Count)).AutoFormat(vFormato)
       pFileName = Path.GetTempFileName.Replace("tmp", "xls")
       File.Delete(pFileName)
       Dim Nombre As String = InputBox("Ingrese el nombre del archivo:", "Guardar Archivo", "C:\")
       If Nombre <> "" Then
           Exc.ActiveWorkbook.SaveAs(Nombre, Excel.XlTextQualifier.xlTextQualifierNone - 1)
       End If
       Exc.ActiveWorkbook.SaveAs(pFileName, _
         Excel.XlTextQualifier.xlTextQualifierNone - 1)
       Exc.Quit()
       Ws = Nothing
       Wb = Nothing
       Exc = Nothing
       GC.Collect()
       If valor > -1 Then
           Dim p As System.Diagnostics.Process = New System.Diagnostics.Process
           p.EnableRaisingEvents = False
           'p.Start("Excel.exe", pFileName)
       End If
       System.Threading.Thread.CurrentThread.CurrentCulture = vCultura
       limpia()
   End Sub


este codigo funciona perfecto el problema son los zeros a la izquierda que son requerido por cierto importe los siguientes espacios de nombres.

Imports System.IO
Imports Microsoft.Office.Interop


y hago uso de las siguientes librerias Microsoft.Office.Interop.Excel.dll y Microsoft.Vbe.Interop.dll
#27
es correcto tal como queria muchisisisisisimas gracias  D4N93R esa linera era la que no me quedaba. Por si a alguien le sirve quedo asi.

sConn = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & _
System.IO.Path.GetDirectoryName("C:\scrpt_dbf\nomina.dbf")
query = "select * from nomina"
Using dbConn As New System.Data.Odbc.OdbcConnection(sConn)
dbConn.Open()             
Dim da As New System.Data.Odbc.OdbcDataAdapter(query, dbConn)
Dim dt As New DataTable
da.Fill(dt)
dt.Columns.Add("Codigo", Type.GetType("System.String")) 'crea la columna
For i = 0 To datos1.Tables("sierra").Rows.Count - 1
   cta = datos1.Tables("sierra").Rows(i).Item(0).ToString
   cod = datos1.Tables("sierra").Rows(i).Item(2).ToString
   dt.Rows(i)("Codigo") = cod
Next


asi es como leo un dbf y el resultado lo pongo en el datatable para agregarle la columna y luego le agrego los datos barriendo el datatble y el dataset trae el dodigo que leo del xls y lo agreco a la columna Codigo
#28
ok
tengo una enlace a un dbf y el resultado lo pongo en un datatable de la sig manera

sConn = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" & _
System.IO.Path.GetDirectoryName("C:\scrpt_dbf\nomina.dbf")
query = "select * from nomina"
Using dbConn As New System.Data.Odbc.OdbcConnection(sConn)
dbConn.Open()             
Dim da As New System.Data.Odbc.OdbcDataAdapter(query, dbConn)
Dim dt As New DataTable
da.Fill(dt)

enseguida le agrega una columna que estoy obteniendo de un xls. que estoy leyendo, de la sig manera

dt.Columns.Add("Codigo", Type.GetType("System.String"))
For i = 0 To datos1.Tables("sierra").Rows.Count - 1
    cta = datos1.Tables("sierra").Rows(i).Item(0).ToString
    cod = datos1.Tables("sierra").Rows(i).Item(2).ToString
    Dim Row As DataRow
    Row = dt.NewRow()
    Row.Item("Codigo") = cod
    dt.Rows.Add(Row)
Next


aqui el punto es que esta columna solo encontre que la puedo agregar pero como registro nuevo, yo lo que quiero es que los agrege como columna en los registros existentes. si me explique?
#29
Chavos de casualidad alguien sabe como puedo agregar datos  a la columna Código sin que me lo ponga como nuevo registro como lo puse en el ejemplo anterior.

Agradeceré su apoyo
#30
Este datatable ya tiene inf. Que estoy llenando con el método fill y al agregar la columna y llenado de la misma lo hago  con el siguiente código

dt.Columns.Add("Codigo", Type.GetType("System.String"))
Dim Row As DataRow
Row = dt.NewRow()
Row.Item("Codigo") = cod
dt.Rows.Add(Row)
dt.Rows.Item(i).ToString()


y el xls que genero queda de la siguiente manera

cuenta   subcuenta   partida   subpartida   concepto   abono   cargo   id_salida   Codigo
5000   5200   5200   5012   POLIZA DE IMSS CORRESPONDIENTE AL MES DE MARZO DEL 2010                                                                    0   24847.59   0   
5000   5300   5301   5012   POLIZA DE IMSS CORRESPONDIENTE AL MES DE MARZO DEL 2010                                                                    0   8101   0   
                        A0201
                        A0202
                        A0203
                        A0204
Alguien me puede orientar como le hago para que lo agrege como columna y no como row, gracias por su apoyo