Импорт файла .txt в файл .xlsx

Я работаю над сценарием, который преобразует файл .txt (без разделителей) в электронную таблицу Excel. Моя проблема возникает, когда мне нужно извлечь данные, которые могут содержать от 5 до 10 символов, и в каждой строке есть несколько наборов данных.

Каждая строка может иметь следующее количество символов в каждом поле, и в каждой строке есть пять полей:

10 char    10 char   10 char  17 char           10 char

523452    D918      20120418  1FD7X2XTACEB8963820120606  
523874    L9117244  20120409  3C6TDT5H0CG12130200000000
535581    G700      20120507  5GYFUD CT        00000000

В основном мне нужно иметь возможность вытащить 10,10,10,17,10 и поместить их в свою ячейку в строке в Excel. Я могу вытащить ячейки, как сейчас, но это основано на разграничении пространства, и это вызывает проблему, когда поля не занимают весь объем пространства, и в итоге я получаю лист Excel с пустыми ячейками.


person fielix16    schedule 27.06.2012    source источник


Ответы (3)


Вы можете использовать String.Substring (ваш тег читается как C#):

using System;
using System.IO;

class Test 
{
  public static void Main() 
  {
     try 
     {
        // Create an instance of StreamReader to read from a file.
        // The using statement also closes the StreamReader.
        using (StreamReader sr = new StreamReader("TestFile.txt")) 
        {
            String line;
            // Read and display lines from the file until the end of 
            // the file is reached.
            while ((line = sr.ReadLine()) != null) 
            {
                String Chunk1 = line.Substring( 0, 10);  // First 10
                String Chunk2 = line.Substring(10, 10);  // Second 10
                String Chunk3 = line.Substring(20, 10);  // Third 10
                String Chunk4 = line.Substring(30, 17);  // Now 17
                String Chunk5 = line.Substring(47);      // Remainder (correction: Chunk2 --> Chunk5)
                Console.WriteLine("Chunks 1: {0} 2: {1} 3: {2} 4: {3} 5: {4})",
                     Chunk1, Chunk2, Chunk3, Chunk4, Chunk5);

            }
            Console.ReadLine();
        }
     }
     catch (Exception e) 
     {
        // Let the user know what went wrong.
        Console.WriteLine("The file could not be read:");
        Console.WriteLine(e.Message);
     }
  }
}
person Ken White    schedule 27.06.2012

Код не требуется, если импорт выполняется из Excel (ДАННЫЕ, Получить внешние данные, Из текста, Фиксированная ширина):

пример SO1228000

person pnuts    schedule 09.08.2015

Вы можете использовать Mid() для получения определенной части строки. Если строка удерживается в currentLine, вы можете извлечь поля следующим образом:

Dim fields(5)
fields(1) = Mid(currentLine, 1, 10)
fields(2) = Mid(currentLine, 11, 10)
fields(3) = Mid(currentLine, 21, 10)

и так далее.

person Ilmo Euro    schedule 27.06.2012