если файл не существует в каталоге, то в конце приложения отобразить пользователю результат диалога со списком файлов, которые не были найдены - PullRequest
0 голосов
/ 01 октября 2018

У меня есть это приложение, которое читает список номеров файлов из листа Excel пользователя в столбце А. Приложение читает эти номера файлов и находит их в каталоге, а также использует извлечение и объединение PDF-файлов для разделения этих PDF-файлов по именам заголовков иобъединяет их соответственно.

Код работает нормально.Но я подумал: а что, если у пользователя есть список из 20 номеров файлов в его листе Excel, а код находит только 18 из 20 этих файлов ... как пользователь узнает в конце, над какими из них не работали?

Поэтому я подумал, что в конце приложения оно должно показать пользователю диалоговое окно со списком файлов, которые не были найдены.

Это то, что я пытался использовать до сих порчтобы проверить существование файла:

Imports System.IO
Imports Bytescout.PDFExtractor
Imports Microsoft.Office.Interop
Imports System.IO.Path
Public Class Form1
    Class PageType
        Property Identifier As String
        Property TypeName As String
    End Class

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Dim OpenFileDialog = New OpenFileDialog()
            OpenFileDialog.Title = "Please Select a File"
            OpenFileDialog.InitialDirectory = "c:\\"
            OpenFileDialog.Filter = "Excel files|*.xls;*.xlsx;*.xlsm"
            OpenFileDialog.FilterIndex = 2
            OpenFileDialog.RestoreDirectory = True

            If OpenFileDialog.ShowDialog() = DialogResult.OK Then
                TextBox1.Text = OpenFileDialog.FileName
            Else
                Return

            End If

            Dim xlApp As Excel.Application
            Dim xlWorkBook As Excel.Workbook
            Dim xlWorkSheet As Excel.Worksheet
            Dim range As Excel.Range
            Dim aCell As Object
            xlApp = New Excel.Application
            xlWorkBook = xlApp.Workbooks.Open(TextBox1.Text)
            xlWorkSheet = xlWorkBook.Worksheets("sheet1")
            range = xlWorkSheet.UsedRange

            Dim Dir = "G:\Word\Department Folders\Pre-Suit\Drafts-IL\2-IL_AttyReview\2018-09\Reviewed\"
            Dim unmerged = Combine(Dir, "unmerged")
            ' Set up a list of the identifiers to be searched for and the corresponding names to be used in the filename.
            Dim pageTypes As New List(Of PageType)
            Dim ids = {"COVERSPLIT", "COMPLAINTSPLIT", "EXHIBITSPLIT", "MILSPLIT", "SUMSPLIT"}
            Dim nams = {" Cover Sheet ", " Complaint ", " Exhibit ", " Military ", " Summons "}


            For Each aCell In range
                If Not File.Exists(Dir & aCell.Value & ".pdf") Then
                    MsgBox(aCell.Value & " file does not exist")

                Else

В листе Excel я поместил фиктивное имя файла, такое как "ZTEST $$. * # & $ ^ 05", прекрасно зная, что это не будетв каталоге файлов.

Я также поставил это как msgBox, потому что я хотел видеть фактические значения, которые собирало приложение, чтобы показать мне, что он читает ....

thisвот что я попробовал:

For Each aCell In range
                If Not File.Exists(Dir & aCell.Value & ".pdf") Then
                    MsgBox(aCell.Value & " file does not exist")

                Else

(я пробовал это с «Dir» и без него, я хотел убедиться, что он читает его из каталога с общим общим диском, а не с моего компьютера)

Это то, что было указано в моем листе Excel:

ZTEST10.SAMPLE01

ZTEST14.SAMPLE05

ZTEST $$. * # & $ ^ 05

ZTEST12.SAMPLE03

когда я запускал это, казалось, что для каждого номера файла в столбце A мой код будет возвращать пустое значениекак если бы он не существовал в каталоге, давая мне сообщение вроде:

"Номер файла не существует" -> хорошо

"Номер файла не существует" -> хорошо

"ZTEST $$. * # & $ ^ 05 Номер файла не существует" -> хорошо

"Номер файла не существует" -> хорошо

"Номер файлане существует "-> хорошо

Почему это происходит?Являются ли следы Excel чтением ячейки от предыдущих раз, когда ячейка содержала значение, и я удалил его или что-то еще?

Редактировать: я вернулся к этому листу Excel и удалил все столбцы справа от столбца A,и все ячейки под списком, и теперь этот код работает ....

Проблема в том, будет ли пользователь делать это каждый раз, когда у него есть список номеров файлов в таблице Excel?Есть ли способ игнорировать пустые значения?

...