2016-03-24 2 views
0

Я написал код для чтения файла с разделителями табуляции одной строки (строки) за раз. Я создал файл из таблицы Excel, сохранив его в виде текстового файла с разделителями табуляции. Каждая строка в электронной таблице содержит 39 столбцов, что означает 38 вкладок. Целью этого является возможность обернуть каждый из 39 бит данных, включая пустые биты, в теги XML. Однако этот код a. печатает каждую отдельную часть данных в электронной таблице по одной строке за раз, у меня возникают проблемы с попыткой доступа к определенному элементу данных, что очень важно. Первый столбец - это идентификатор пользователя, двенадцатый столбец - первичная строка адреса 1, а столбец 36 - примечание покровителю. Однако, если я изменил код ниже, чтобы получить (55), я получаю исключение IndexOutOfBounds. Если я попрошу первую часть данных, get (0), программа перечисляет каждую отдельную часть данных во всем файле.Прочитать файл с разделителями-запятыми в одной строке «Java» за один раз

boolean resultFlag = false; 
    try 
    { 
    theScanner = new Scanner(new FileReader("C:\\WMS\\GGBTS_Patron_Data_20160317_V1-0.txt")); 
    while (theScanner.hasNextLine()) 
    { 
    patronRow = theScanner.next(); 
    itemArray = new ArrayList(Arrays.asList(patronRow.split("\t"))); 
    for(int i=0; i<itemArray.size(); i++) 
     { 
     System.out.println(" -->"+itemArray.get(i)); 
     }   
    } 
    resultFlag = true; 
} 

Что мне нужно сделать, чтобы получить 39 элементов одной строки и быть в состоянии обратиться к ним по номеру индекса, прежде чем переходить к следующей логической линии? Я не знаю, сохраняет ли Excel файлы с разделителями-разделителями с помощью \ n \ r или тому подобное или нет. Помоги пожалуйста. Мне здесь немного мешает, потому что, хотя я много лет программировал в своей нынешней ситуации, я являюсь академическим библиотекарем в небольшой библиотеке, и нет никакой возможности получить ИТ-поддержку. Я знаю программирование лучше, чем наши два ИТ-ребята, так или иначе, кто занимается операциями, а не кодированием. Благодарю.

Кен

+0

Вы смотрели в используя библиотеку синтаксического анализа CSV? Многие из них могут использовать настраиваемый разделитель полей. – dnault

ответ

1

Эта линия:

patronRow = theScanner.next(); 

Должно быть:

patronRow = theScanner.nextLine(); 

Вы хотите получить всю строку затем разделить на \t ...

Смежные вопросы