Я работаю над приложением, которое читает большой текстовый файл с разделителями табуляции и возвращает файл Excel с несколькими листами с одинаковыми данными.
Мне удалось успешно создать файл.Однако я столкнулся с проблемой.Когда я импортирую файл во вновь созданный файл Excel, файл открывается, когда импортируется первый файл.Я не хочу, чтобы это произошло, я хочу, чтобы пользователь открывал его, когда все файлы были успешно импортированы.
Интересно то, что этого не произошло, когда я отлаживал приложение впервый.Поэтому я озадачен тем, почему это происходит сейчас.Может быть потому, что мне не хватает члена таблицы запросов?
Не могли бы вы мне помочь?Спасибо!
РЕДАКТИРОВАТЬ: я обнаружил, что добавление заголовков в файл был причиной этой проблемы.Тем не менее, после редактирования их до такой степени, что они больше не понятны, я все равно не могу заставить его работать.
заголовки:
encabezados = {"Name",
"Description",
"listingId", "SKU", "price", "quantity", "Date", "image", "item",
"productId", "Shipping", "note", "condition", "category1", "browsepath", "storefrontfeature",
"asin", "asins", "asinss", "willshipinternationally", "expeditedshipping", "zshopboldface", "producid", "bidForfeaturedplacement", "adddelete",
"pendingquantity", "fulfillmentchannel", "BusinessPrice", "QuantityPriceType", "QuantityLowerBound", "QuantityPrice", "QuantityLowerBounds",
"QuantityPrices", "QuantityLowerBoundss", "QuantityPricess", "QuantityLowerBoundsss", "QuantityPricesss", "QuantityLowerBoundssss",
"QuantityPricessss", "merchantshippinggroup"}
Функция:
Private Sub createExcel(pagina)
Dim hoja = 1
Dim excel As Excel.Application = New Microsoft.Office.Interop.Excel.Application()
If excel Is Nothing Then
MessageBox.Show("Error. Excel 2016 no está instalado en esta computadora", "Error")
Exit Sub
End If
Dim iSheetsPerBook As Integer
Dim misValue As Object = System.Reflection.Missing.Value
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
excel.SheetsInNewWorkbook = pagina
For i = 1 To pagina
iSheetsPerBook = excel.SheetsInNewWorkbook
xlWorkBook = excel.Workbooks.Add(misValue)
excel.SheetsInNewWorkbook = iSheetsPerBook
Next
For x = 1 To pagina
Dim archivo = String.Format("{0}\ArchivosExcel\excel{1}.txt", dondeEstaElArchivo, x)
xlWorkSheet = xlWorkBook.Worksheets(hoja)
Dim qt As QueryTable = xlWorkSheet.QueryTables.Add(Connection:=String.Format("TEXT;{0}", archivo), Destination:=xlWorkSheet.Range("$A$1"))
With qt
.Name = "Import"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = XlCellInsertionMode.xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = XlTextParsingType.xlDelimited
.TextFileTextQualifier = XlTextQualifier.xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = GetColumnDataTypes(xlWorkSheet.Columns.Count)
.TextFileTrailingMinusNumbers = True
.Refresh(BackgroundQuery:=False)
End With
hoja += 1
Next
Dim saveDialog As New SaveFileDialog()
saveDialog.Title = "Por favor elija donde quiere guardar el archivo"
saveDialog.Filter = "Excel 2007-on (*.xlsx)|*.xlsx"
Dim respuesta = saveDialog.ShowDialog()
If respuesta = DialogResult.Cancel Or saveDialog.FileName = "" Then
Exit Sub
End If
Dim fileSave = saveDialog.FileName
xlWorkBook.SaveAs(fileSave)
xlWorkBook.Close(True, misValue, misValue)
excel.Quit()
releaseObject(xlWorkSheet)
releaseObject(xlWorkBook)
releaseObject(excel)
End Sub
Private Function GetColumnDataTypes(queryTableColumnsCount As Long) As Object
Dim textDataTypes As XlColumnDataType()
textDataTypes = Enumerable.Repeat(XlColumnDataType.xlTextFormat, queryTableColumnsCount).ToArray()
Return textDataTypes
End Function