당신이 정말로 Excel 파일을 원하는 경우, 하나를 만들기위한 최선의 라이브러리 Andy Khan's JExcel입니다.
시간당 정렬 된 .csv 쌍으로 각 워크마다 하나의 워크 시트가 필요하다고 생각합니다.
시간 대 변수의 그래프 인 경우 각 쌍의 첫 번째 값이 "시간"이 아니겠습니까?
다음은 어떻게 수행할까요? 제가 제공 한 간단한 테스트 케이스에서 완벽하게 작동합니다. 확장 할 수있는 작동 코드입니다.
package jexcel;
import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JExcelUtils
{
public static void main(String[] args)
{
String fileName = ((args.length > 0) ? args[0] : "jexcel.xls");
Map<String, List<Pair>> csv = new HashMap<String, List<Pair>>()
{{
put("Flow1", fromArrayToList(new double[][]
{
{ 0.0, 0.0 },
{ 0.1, 1.0 },
{ 0.2, 2.0 },
{ 0.3, 3.0 },
{ 0.4, 4.0 },
{ 0.5, 5.0 },
}));
put("Flow2", fromArrayToList(new double[][]
{
{ 0.0, 0.0 },
{ 0.1, 1.0 },
{ 0.2, 4.0 },
{ 0.3, 9.0 },
{ 0.4, 16.0 },
{ 0.5, 25.0 },
}));
}};
WritableWorkbook excelContents = null;
try
{
File excelFile = new File(fileName);
excelContents = createExcel(excelFile, csv);
excelContents.write();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (WriteException e)
{
e.printStackTrace();
}
finally
{
try { if (excelContents != null) excelContents.close(); } catch (Exception e) { e.printStackTrace(); }
}
}
public static List<Pair> fromArrayToList(double [][] input)
{
List<Pair> result = new ArrayList<Pair>();
for (int i = 0; i < input.length; ++i)
{
result.add(new Pair(input[i][0], input[i][1]));
}
return result;
}
public static WritableWorkbook createExcel(File excelFile, Map<String, List<Pair>> worksheets) throws IOException, WriteException
{
WritableWorkbook result = Workbook.createWorkbook(excelFile);
int order = 0;
for (String worksheetName : worksheets.keySet())
{
WritableSheet worksheet = result.createSheet(worksheetName, order++);
List<Pair> worksheetValues = worksheets.get(worksheetName);
for (int row = 0; row < worksheetValues.size(); ++row)
{
worksheet.addCell(new jxl.write.Number(0, row, worksheetValues.get(row).getX()));
worksheet.addCell(new jxl.write.Number(1, row, worksheetValues.get(row).getY()));
}
}
return result;
}
}
class Pair
{
private double x;
private double y;
Pair(double x, double y)
{
this.x = x;
this.y = y;
}
public double getX()
{
return x;
}
public double getY()
{
return y;
}
}
감사합니다. 당신이 제안한 링크를 읽으면서 혼란 스러웠습니다. 지금 제공 한 코드를 살펴 보겠습니다. –
@Red Lion 예. CSV에 쓰기위한 옵션이 너무 많습니다. 너 같은 단순한 경우에는 아무 문제없이 실제로 이것들을 사용할 수있다. – YoK
제 코드를 보시고 제 게시물을 편집 해 주실 수 있습니까? –