From 5d9e93d0d4b53dfe5e51f0c503e477135ef06eb3 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Tue, 3 Sep 2019 16:46:45 -0700 Subject: [PATCH] Soporte en OC carar lisado con gem box --- OC/OC.aspx.vb | 92 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 21 deletions(-) diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index f2bb091f8..818e6c6d0 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -4,6 +4,7 @@ Option Strict On Imports System.Data Imports Extensiones Imports System.IO +Imports GemBox.Spreadsheet Partial Class OC Inherits ClsPaginas @@ -5831,31 +5832,80 @@ Partial Class OC End If End Sub + Private Function ReadExcelFile(ByVal flatFilePath As String, ByVal firstRowHasHeaders As Boolean) As DataTable + SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) + Dim excelFile As ExcelFile = ExcelFile.Load(flatFilePath) + + Dim unnamed As Integer = 0 + Dim cols As Integer + Dim columns As String() + Dim curRow As Integer = 0 + Dim curCol As Integer = 0 + Dim dataTable As DataTable = New DataTable() + Dim worksheet As ExcelWorksheet = excelFile.Worksheets(0) + + For cols = 0 To worksheet.Rows(0).AllocatedCells.Count - 1 + + If firstRowHasHeaders Then + + If worksheet.Rows(0).Cells(cols).Value IsNot Nothing Then + dataTable.Columns.Add(worksheet.Rows(0).Cells(cols).Value.ToString()) + Else + dataTable.Columns.Add("Unnamed Column " & (System.Threading.Interlocked.Increment(unnamed))) + End If + + curRow = 1 + Else + dataTable.Columns.Add("Column " & (cols + 1)) + End If + Next + + While curRow < worksheet.Rows.Count + columns = New String(cols - 1) {} + + For curCol = 0 To cols - 1 + + If worksheet.Rows(curRow).Cells(curCol).Value Is Nothing Then + columns(curCol) = "" + Else + columns(curCol) = worksheet.Rows(curRow).Cells(curCol).Value.ToString() + End If + Next + + dataTable.Rows.Add(columns) + curRow += 1 + End While + + Return dataTable + End Function + Private Sub CargarArchivo(Ruta As String, FileName As String, Tipo As String) Dim dt As New DataTable - Dim Conexion As Odbc.OdbcConnection = Nothing + dt = ReadExcelFile(Ruta + FileName, True) Dim ErrorArchivo = False - Try - Select Case Tipo - Case "EXCEL" - Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") - Conexion.Open() - Dim cmd = Conexion.CreateCommand() - cmd.CommandType = CommandType.Text - cmd.CommandText = "SELECT * FROM [Hoja1$]" - Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) - DataAdapter.Fill(dt) - Case Else - Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) - Exit Sub - End Select - Catch ex As Exception - ErrorArchivo = True - OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) - End Try - Conexion.Close() - If Not ErrorArchivo Then + + 'Dim Conexion As Odbc.OdbcConnection = Nothing + 'Try + ' Select Case Tipo + ' Case "EXCEL" + ' Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") + ' Conexion.Open() + ' Dim cmd = Conexion.CreateCommand() + ' cmd.CommandType = CommandType.Text + ' cmd.CommandText = "SELECT * FROM [Hoja1$]" + ' Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) + ' DataAdapter.Fill(dt) + ' Case Else + ' Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) + ' Exit Sub + ' End Select + 'Catch ex As Exception + ' ErrorArchivo = True + ' OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) + 'End Try + 'Conexion.Close() + If Not ErrorArchivo AndAlso dt IsNot Nothing Then If Not dt.Columns(0).ColumnName = "Cantidad" Then Alert("El nombre de la primera columna debe ser 'Cantidad'.Favor de corregirlo", TipoMensaje.MsgError) Exit Sub