jxl只能操作xls,但poi都可以 建议poi
JXL
package com.ldu.demo.Controller;
import GA_VRP.Class1;
import com.ldu.demo.vo.diaodu;
import com.mathworks.toolbox.javabuilder.MWException;
import com.mathworks.toolbox.javabuilder.MWNumericArray;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.IOException;
@CrossOrigin
@RestController
@RequestMapping("api/v1/pri/user")
public class Wincontroller {
@PostMapping("matlab")
public void test(@RequestBody diaodu diaodu) throws IOException, WriteException {
System.out.println(diaodu.toString());
File xlsFile = new File("../code/Distance.xls");
File xlsFile2 = new File("../code/X.xls");
File xlsFile3 = new File("../code/Demand.xls");
Double [][] distance=diaodu.getDistance();
Double [] distance2=diaodu.getDistance2();
Double [] demand=diaodu.getDemand();
// 创建一个工作簿
WritableWorkbook workbook = Workbook.createWorkbook(xlsFile);
// 创建一个工作表
WritableSheet sheet = workbook.createSheet("sheet1", 0);
for (int row = 0; row < distance.length; row++)
{
for (int col = 0; col < distance[row].length; col++)
{
// 向工作表中添加数据
System.out.println(distance[row][col]);
sheet.addCell(new Label(col, row, distance[row][col].toString()));
}
}
WritableWorkbook workbook2 = Workbook.createWorkbook(xlsFile2);
// 创建一个工作表
WritableSheet sheet2 = workbook2.createSheet("sheet1", 0);
for (int row = 0; row < 1; row++)
{
for (int col = 0; col < distance2.length; col++)
{
System.out.println(distance2[col]);
// 向工作表中添加数据
sheet2.addCell(new Label(col, row, distance2[col].toString()));
}
}
WritableWorkbook workbook3 = Workbook.createWorkbook(xlsFile3);
// 创建一个工作表
WritableSheet sheet3 = workbook3.createSheet("sheet1", 0);
for (int row = 0; row < 1; row++)
{
for (int col = 0; col < demand.length; col++)
{
System.out.println(demand[col]);
// 向工作表中添加数据
sheet3.addCell(new Label(col, row, demand[col].toString()));
}
}
workbook.write();
workbook.close();
workbook2.write();
workbook2.close();
workbook3.write();
workbook3.close();
String file1 = new File("../code/Demand.xls").getAbsolutePath();
String file2 = new File("../code/Distance.xls").getAbsolutePath();
String file3 = new File("../code/X.xls").getAbsolutePath();
try {
System.out.println(file1);
Class1 my_GA = new Class1();
Object[] result1 = my_GA.GA_VRP(2,file1,file2,file3, 3, 8, 25, 50);
MWNumericArray X_Best = (MWNumericArray) result1[0];
MWNumericArray Y_Obj = (MWNumericArray) result1[1];
System.out.println("22");
System.out.println(X_Best);
System.out.println(Y_Obj);
} catch (MWException e) {
e.printStackTrace();
}
}
}
POI
//判断文件是否存在
public static boolean fileExist(String filePath){
boolean flag = false;
File file = new File(filePath);
flag = file.exists();
return flag;
}
//向Excel中写数据
public static void writeExcel(String filePath){
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("sheet1");
XSSFRow firstRow = sheet.createRow(0);//第一行表头
XSSFCell cells[] = new XSSFCell[3];
//循环设置表头信息
//遍历list,将数据写入Excel中
for (int i=0;i<3;i++){
XSSFRow row = sheet.createRow(i+1);
XSSFCell cell = row.createCell(0); //第一列
cell.setCellValue(1);
cell=row.createCell(1); //第二列
cell.setCellValue(2);
cell=row.createCell(2); //第三列
cell.setCellValue(3);
}
OutputStream out = null;
try {
out = new FileOutputStream(filePath);
workbook.write(out);
out.close();
} catch (Exception e){
e.printStackTrace();
}
}
@Test
public void writeExcel(){
String filePath = "../ExcelData.xlsx";
boolean flag = fileExist(filePath);
if (flag){
writeExcel(filePath);
}else {
File file = new File(filePath);
writeExcel(filePath);
}
}