У меня есть следующий файл csv, который содержит следующие данные, которые я хочу преобразовать в файл Excel в формате 2003 с помощью POI-банок, поэтому я используя для этого версию poiz 3.10.преобразование .csv в .xls для строки и столбца значения удваивается
при преобразовании его в файл .xls необходимо соблюдать особую осторожность для столбца PAYMENT_TYPE, поскольку его значение между ними состоит из запятой, но это не следует рассматривать как разделитель, и значение начинается с двойных кавычек и заканчивается двойными кавычками, поэтому что следует рассматривать как одно значение, поэтому позиция столбца PAYMENT_TYPE также фиксируется в файле CSV, что она будет всегда находиться на пятом месте так ниже это файл .csv
REC_STATUS,TRADE_ID,SETTLEMENT_DATE,TRADE_EFFECTIVE_DATE,PAYMENT_TYPE,VERSION,BREAK_DOWN_BUCKET,CAUSE,NUM_CASHFLOWS_AFFECTED,PROFILE
Found only in File :B,178942690,01-Feb-16,03-Dec-14,"Coupon",5,NOISY_BREAK_BUCKET,REC_TOOL_ISSUE_PAYMENT_DIRECTION_MISMATCH | REC_TOOL_ISSUE_NOTIONAL_MISMATCH | TRADE_VERSION,1,AVS Offshore
Found only in File :A,197743320,Various,21-Dec-15,"Brokerage Estimated,Upfront Fee",1,ACTUAL DATA BREAK BUCKET,ACTUAL_DATA_BREAK,2,AVS Offshore
теперь у меня есть код, чтобы преобразовать его в .xls, как показано ниже, единственная проблема с этим файлом .xls заключается в том, что когда я открываю этот файл .xls, значение второй строки не подходит правильно, то есть значение пятого столбца в excel является оценкой брокера, Искренняя Плата, а затем шестое значение столбца авансового взноса, который не исправить значение шестого столбца 1, пожалуйста, посоветуйте, как я могу это исправить в моем ниже фрагменте кода
package test;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
public class CSVToExcelConverter {
public static void main(String args[]) throws IOException
{
ArrayList arList=null;
ArrayList al=null;
String fName = "C:\\Vabc.csv";
String thisLine;
int count=0;
FileInputStream fis = new FileInputStream(fName);
DataInputStream myInput = new DataInputStream(fis);
int i=0;
arList = new ArrayList();
while ((thisLine = myInput.readLine()) != null)
{
al = new ArrayList();
String strar[] = thisLine.split(",");
for(int j=0;j<strar.length;j++)
{
if(j == 4){
al.add(strar[j] + "," + strar[j+1]);
j++;
}
al.add(strar[j]);
}
arList.add(al);
System.out.println();
i++;
}
try
{
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("new sheet");
for(int k=0;k<arList.size();k++)
{
ArrayList ardata = (ArrayList)arList.get(k);
HSSFRow row = sheet.createRow((short) 0+k);
for(int p=0;p<ardata.size();p++)
{
HSSFCell cell = row.createCell((short) p);
String data = ardata.get(p).toString();
if(data.startsWith("=")){
cell.setCellType(Cell.CELL_TYPE_STRING);
data=data.replaceAll("\"", "");
data=data.replaceAll("=", "");
cell.setCellValue(data);
}else if(data.startsWith("\"")){
data=data.replaceAll("\"", "");
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(data);
}else{
data=data.replaceAll("\"", "");
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(data);
}
//*/
// cell.setCellValue(ardata.get(p).toString());
}
System.out.println();
}
FileOutputStream fileOut = new FileOutputStream("C:\\test.xls");
hwb.write(fileOut);
fileOut.close();
System.out.println("Your excel file has been generated");
} catch (Exception ex) {
ex.printStackTrace();
} //main method ends
}
}
людей пожалуйста советуют для этого
любая ранняя помощь была бы очень благодарна
Вы должны взглянуть на какую-то библиотеку CSV (например, [opencsv] (http://opencsv.sourceforge.net/), например) –
пожалуйста, сообщите, как я могу исправить мою выше логику, пожалуйста, – sss