2013-07-25 4 views
0

Я пытался получить помощь в работе с файлом CSV. Я просмотрел этот форум и другие для разбора CSV-информации в новый CSV-файл, но я не думаю, что CSV-файлы будут содержать строки и столбцы (вероятно, они ошибочны).Изменение строк и столбцов CSV в java

Во всяком случае у меня есть CSV, который выглядит как этот

\CAL 0.75-12188 06-28-2013 12-05.csv 

0 

6-28-2013 12-05 
Serial Nbr,0.75-12188 
Sales Order Nbr,23966 
Model Nbr,3/4" LDP 
Tag Name,LX-2-AHU-7H 
Angle Offset,7.11 
Overshoot,0 
Flow Rate Closing,0.00000000,0.46367650,0.61821940,1.08192100,1.39102900,2.16381500,2.93662600,3.86397900,4.79133200,5.87325100,7.10973700,8.50076700,9.58268700,10.51004000,11.12828000,12.21020000, 
Flow Rate Opening,0.00000000,0.46367650,0.61821940,1.08192100,1.23646200,2.00927400,2.62749100,3.55486900,4.48222200,5.40957500,6.49149300,7.72795900,8.80987500,9.58268700,10.66460000,11.90107000, 
Flow Rate Ave,0.00000000,0.46367650,0.61821940,1.08192100,1.31374500,2.08654400,2.78205900,3.70942400,4.63677700,5.64141300,6.80061500,8.11436300,9.19628100,10.04636000,10.89644000,12.05564000, 
Angle Closing,18.67788000,24.13643000,29.82170000,35.43774000,41.11793000,46.74594000,52.17502000,57.80665000,63.35862000,68.93623000,74.51913000,80.14727000,85.78853000,91.05897000,95.72566000,100.62130000, 
Angle Opening,18.67518000,23.91829000,29.50020000,35.29157000,40.52844000,46.27448000,51.63242000,57.84357000,63.00760000,68.66663000,74.01138000,79.50329000,85.10954000,90.60167000,96.38528000,100.58310000, 
Angle Ave,18.67653000,24.02736000,29.66095000,35.36465000,40.82319000,46.51021000,51.90372000,57.82511000,63.18311000,68.80144000,74.26526000,79.82528000,85.44904000,90.83032000,96.05547000,100.60220000, 

и я хочу, чтобы это выглядело как это (я думаю, что его другой файл, но все файлы имеют одинаковую длину и размер.)

Serial # Model # Tag Name Angle Offset Flow Rate Ave [val 1] Flow Rate Ave [val 2] Flow Rate Ave [val 15] 
0.75-12188 3/4" LDP LX-2-AHU-7H 7.11 0 0.4636765 10.89644 
0.75-12192 0.75 LDP - 11 NC-P-AHU-4H 12.92 0 0.3091087 11.20555 

Вы заметите, что существуют скорости потока val 1, 2, 15 ... и т. Д. ... это представляет собой 15-е значение при расходе или 2-й или 1-й.

Я заметил, что я, возможно, придется добавить к апи что-то вроде opencsv

поэтому я в основном хочу серийный в 0,0 номер модели 0,1 угол смещения в 0,2 и т.д. затем значения должны соответствовать этим данным.

Большое спасибо, до сих пор мне удалось получить csv merge, единственная проблема в том, что они все тупые, как мой первый пример, поэтому, прежде чем слить, я хочу очистить его так.

Спасибо,

Джо

+0

Если это разовая необходимость, я бы открыл файл в Excel и манипулировал им там. –

+0

Извините, что последний пример, прохождение потока [Val 1] должно соответствовать соседним 0, причина, по которой он не совпадает, заключается в том, что файл, с которого я скопировал его, был xls, а не csv. Конечный файл должен быть csv, поэтому между ним должны быть запятые. \ – user2620493

ответ

0

Создайте объект со всеми переменными, которые вы перечислили т.е. Serial Number, Model Number ...etc.

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

public YourObject(String filename) 
{ 
    try 
    { 
     //Create a file reader 
     BufferedReader inputStream = new BufferedReader(new FileReader(filename)); 
     // Read each line and treat appropriately 
     String line; 
     while((line = inputStream.readLine()) != null) 
     { 
      String[] splArry = line.split(","); 
      if(splArry.length > 1) 
      { 
       // set fields appropriately here 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

Затем можно создать метод построить CSV строку, что-то вроде

public String toCSVString() 
{ 
    String out = ""; 
    out += serailNumber + "\t"; // or what ever delimiter you want 
    //... etc for all your fields 
    return out; 
} 

затем, если у вас есть папка со всеми этими файлами вы просто построить объект для каждого объекта, добавить его в список, то для каждого объекта в списке вызова методы CSVString и добавьте это в ваш главный файл csv.

File folder = new File("The folder where your files are") 
Files[] files = folder.listFiles(); 
for(File f: files) 
{ 
    YourObject yourOb = new YourObject(f.getName()); //just realised propbably would be better to create constructer which takes file not the filename; 
    String csv = yourObj.toCSVString(); // and then wrtie this to your new csv file 
} 
Смежные вопросы