vbscript SaveExcelXSL

Guardar excel con el formato xsl

excel xsl
xlWorkBook.SaveAs(carpetaExcel + "\Excel creado importado\FicheroParaImportar.xls", Excel.XlFileFormat.xlExcel8)

vbscript ComprobacionPrevioCotejo

Comprueba 2 rutas distintas。 Si cada una tiene 1 fichero Excel lanza el programa para cotejar ambos archivos。

ComprobacionPrevioCotejo
Dim carpetaCreado As String = "Excel creado importado"
        Dim CarpetaOdin As String = "Excel exportado desde odin"
        Dim carpetaExcel As String = ConfigurationManager.AppSettings("carpetaExcel").ToString()
        Dim diCreado As New DirectoryInfo(carpetaExcel + "\" + carpetaCreado + "\")
        Dim diOdin As New DirectoryInfo(carpetaExcel + "\" + CarpetaOdin + "\")

        Dim fiArr As FileInfo() = diCreado.GetFiles()
        Dim fiArrOdin As FileInfo() = diOdin.GetFiles()
        Dim friCreado As FileInfo
        Dim friOdin As FileInfo

        If fiArr.Length > 1 Then
            MsgBox("Hay más de un fichero en la carpeta '" + carpetaCreado + "'.")
            Exit Sub
        ElseIf fiArr.Length = 0 Then
            MsgBox("La carpeta '" + carpetaCreado + "' esta vacía.")
            Exit Sub
        ElseIf fiArr.Length = 1 Then

            If fiArrOdin.Length > 1 Then
                MsgBox("Hay más de un fichero en la carpeta '" + CarpetaOdin + "'.")
                Exit Sub
            ElseIf fiArrOdin.Length = 0 Then
                MsgBox("La carpeta '" + CarpetaOdin + "' esta vacía.")
                Exit Sub
            ElseIf fiArrOdin.Length = 1 Then

                friCreado = fiArr(0)
                friOdin = fiArrOdin(0)
                If friCreado.Extension <> ".xlsx" AndAlso friCreado.Extension <> ".xls" Then
                    MsgBox("El fichero" + friCreado.Name.ToString() + "no es un Excel.")
                    Exit Sub
                Else
                    If friOdin.Extension <> ".xlsx" AndAlso friOdin.Extension <> ".xls" Then
                        MsgBox("El fichero" + friOdin.Name.ToString() + "no es un Excel.")
                        Exit Sub
                    End If
                End If
            End If
        End If

vbscript 记录TRACE

Si no va bien en Log4Net usar este log。 Con el trace escribe en el log。 En el app.config ponerlosparámetros。

trace
Trace.WriteLine(Date.Now.ToString & " Empieza ProcesoM9T9")

Antes poner en app.cofig:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="textWriterListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="LogProcesoM9T9.txt" />
        <remove name="Default" />
      </listeners>
    </trace>
    <sources>
      <!-- En esta sección se define la configuración del registro para My.Application.Log -->
      <source name="DefaultSource" switchName="DefaultSwitch">
        <listeners>
          <add name="FileLog"/>
          <!-- Quite los comentarios de la sección posterior para escribir en el registro de eventos de la aplicación -->
          <!--<add name="EventLog"/>-->
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="DefaultSwitch" value="Information" />
    </switches>
    <sharedListeners>
      <add name="FileLog"
           type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
           initializeData="FileLogWriter"/>
      <!-- Quite los comentarios de la sección posterior y reemplace APPLICATION_NAME con el nombre de su aplicación para escribir en el registro de sucesos de la aplicación -->
      <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
    </sharedListeners>
  </system.diagnostics>
  <appSettings>
    <!--DESARROLLO-->
    <!--<add key="P_cPath" value="\\bancamarch.es\bmdept\cb1516\0640\PagaresBM" />-->
    <!--<add key="P_cPath" value="C:\Users\7725\Desktop\PagaresBM" /> --><!--LOCAL--><!--
    <add key="destPath" value="C:\Users\7725\Desktop\ProcesoM9T9" /> --><!--LOCAL-->
    
    <!--PRODUCCION-->
    <add key="P_cPath" value="\\bancamarch.es\bmdept\cb0640\PAGARESBM" />
    <add key="destPath" value="\\SVCL0101\FICHEROS_INFORMACIONAL\Interface_Usuario\Pagares_diario" />

  </appSettings>
</configuration>

vbscript ExistYourFile

Comprueba si existe el fichero y si existe lo borra

ExistYourFile
If File.Exists(path) Then
    File.Delete(path)
End If

vbscript ExistYourPath

Comprueba si existe la ruta y sino la crea。

ExistYourPath
If (Not System.IO.Directory.Exists(yourPath)) Then
    System.IO.Directory.CreateDirectory(yourPath)
End If

vbscript CopiaFichero覆盖

Primer atributoladirecciónconel nombre del archivo a copiar。 <br/> Segundo atributoladireccióndondese quiere copiar con el nombre que se quiere al copiar。 <br/> El True es que habilita Overwrite,si no se pone nada por defecto es False。

fileCopyOverWrite
File.Copy(path, System.IO.Path.Combine(pathCopia, System.IO.Path.GetFileName(path)), True)

vbscript ReadLine控制台

Obtiene el valor escrito por consola

getLineConsole
Dim fecha As String
Console.WriteLine("Puedes escribir la fecha deseada para generar los ficheros o sino usará la fecha actual")
Console.Write("Fecha(YYYYMMDD): ")
fecha = Console.ReadLine()
If (fechaCorrecta(fecha)) Then
    fechaGlobal = fecha
Else
    fechaGlobal = ""
    Console.WriteLine("Fecha por defecto del día actual.")
End If
Console.WriteLine(fecha)

vbscript Recorrer DataGridView y cambiar color de fondo de una celda

RecorrerDataGridView
'iteración del DataGridView para cambiar el color de la celda si encuentra algo distinto
Dim countFallos As Integer = 0
For Each row As DataGridViewRow In DataGridView1.Rows
    If row.Cells(4).Value <> row.Cells(11).Value Then
        row.Cells(4).Style.BackColor = Color.Red
        row.Cells(11).Style.BackColor = Color.Red
        countFallos += 1
    End If
    If row.Cells(6).Value <> row.Cells(13).Value Then
        row.Cells(6).Style.BackColor = Color.Red
        row.Cells(13).Style.BackColor = Color.Red
        countFallos += 1
    End If
Next
If countFallos > 10 Then
    MsgBox("Hay un gran número de fallos. Revisa que la fecha de los excels sea correcta.")
End If

vbscript Recorrido DataTables

Recorre dos DataTables comparando contenido y guardando ambos en un DataGridView en la misma fila。 Esintensacióndelsnippet“Excel to DataTable”

recorridoDataTables
If dtOdin.Rows.Count <> dtCreado.Rows.Count Then
    MsgBox("¡Los excel tienen distinto número de filas!")
End If

Dim encontrado As Boolean
For Each rowOdin As DataRow In dtOdin.Rows
    encontrado = False
    For Each rowCreado As DataRow In dtCreado.Rows
        If IIf(rowCreado(0) Is DBNull.Value, "", Convert.ToString(rowCreado(0))) = IIf(rowOdin(0) Is DBNull.Value, "", Convert.ToString(rowOdin(0))) AndAlso IIf(rowCreado(1) Is DBNull.Value, "", Convert.ToString(rowCreado(1))) = IIf(rowOdin(1) Is DBNull.Value, "", Convert.ToString(rowOdin(1))) AndAlso IIf(rowCreado(2) Is DBNull.Value, "", Convert.ToString(rowCreado(2))) = IIf(rowOdin(2) Is DBNull.Value, "", Convert.ToString(rowOdin(2))) AndAlso IIf(rowCreado(3) Is DBNull.Value, "", Convert.ToString(rowCreado(3))) = IIf(rowOdin(3) Is DBNull.Value, "", Convert.ToString(rowOdin(3))) AndAlso IIf(rowCreado(5) Is DBNull.Value, "", Convert.ToString(rowCreado(5))) = IIf(rowOdin(5) Is DBNull.Value, "", Convert.ToString(rowOdin(5))) Then
            'poner en data grid los datos
            Dim row As String() = New String() {IIf(rowOdin(0) Is DBNull.Value, "", rowOdin(0)), IIf(rowOdin(1) Is DBNull.Value, "", rowOdin(1)), IIf(rowOdin(2) Is DBNull.Value, "", rowOdin(2)), IIf(rowOdin(3) Is DBNull.Value, "", rowOdin(3)), IIf(rowOdin(4) Is DBNull.Value, "", rowOdin(4)), IIf(rowOdin(5) Is DBNull.Value, "", rowOdin(5)), IIf(rowOdin(6) Is DBNull.Value, "", rowOdin(6)), IIf(rowCreado(0) Is DBNull.Value, "", rowCreado(0)), IIf(rowCreado(1) Is DBNull.Value, "", rowCreado(1)), IIf(rowCreado(2) Is DBNull.Value, "", rowCreado(2)), IIf(rowCreado(3) Is DBNull.Value, "", rowCreado(3)), IIf(rowCreado(4) Is DBNull.Value, "", rowCreado(4)), IIf(rowCreado(5) Is DBNull.Value, "", rowCreado(5)), IIf(rowCreado(6) Is DBNull.Value, "", rowCreado(6))}
            DataGridView1.Rows.Add(row)
            encontrado = True
            Exit For
        End If
    Next
    If encontrado = False Then
        Dim row As String() = New String() {IIf(rowOdin(0) Is DBNull.Value, "", rowOdin(0)), IIf(rowOdin(1) Is DBNull.Value, "", rowOdin(1)), IIf(rowOdin(2) Is DBNull.Value, "", rowOdin(2)), IIf(rowOdin(3) Is DBNull.Value, "", rowOdin(3)), IIf(rowOdin(4) Is DBNull.Value, "", rowOdin(4)), IIf(rowOdin(5) Is DBNull.Value, "", rowOdin(5)), IIf(rowOdin(6) Is DBNull.Value, "", rowOdin(6)), "", "", "", "", "", "", ""}
        DataGridView1.Rows.Add(row)
    End If
Next

vbscript Excel到DataTable

Excel一个dataTable。 Tener en cuenta el nombre de la hoja excel(Sheet0)。 Si da error de que no encuentra Microsoft.Jet ... poner la cpu del compilar a x86

ExcelToDataTable
'carpetas donde estan los excels y nombre de los excels
            Dim carpetaCreado As String = "Excel creado importado"
            Dim CarpetaOdin As String = "Excel exportado desde odin"
            Dim carpetaExcel As String = ConfigurationManager.AppSettings("carpetaExcel").ToString()
            Dim diCreado As New DirectoryInfo(carpetaExcel + "\" + carpetaCreado + "\")
            Dim diOdin As New DirectoryInfo(carpetaExcel + "\" + CarpetaOdin + "\")

            Dim fiArr As FileInfo() = diCreado.GetFiles()
            Dim fiArrOdin As FileInfo() = diOdin.GetFiles()
            Dim friCreado As FileInfo
            Dim friOdin As FileInfo
            friCreado = fiArr(0)
            friOdin = fiArrOdin(0)
'excel odin
            Dim connectionStringOdin As String
            If friOdin.Extension = ".xls" Then
                connectionStringOdin = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Extended Properties='Excel 8.0;HDR=Yes';" & _
                 "Data Source=" & diOdin.ToString() + friOdin.Name.ToString()
            Else
                connectionStringOdin = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                 "Extended Properties='Excel 12.0;HDR=Yes';" & _
                 "Data Source=" & diOdin.ToString() + friOdin.Name.ToString()
            End If

            Dim cnn As New OleDbConnection(connectionStringOdin)
            sql = "SELECT * FROM [Sheet0$]"

            Dim da As New OleDbDataAdapter(sql, cnn)

            Dim dtOdin As New DataTable()

            da.Fill(dtOdin)

            DataGridView1.DataSource = dtOdin