import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
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.util.CellRangeAddress;
public class ExcelUtils {
/**
* 在指定文件目录生成Excel
* @param firstRowName Excel第一行的总标题
* @param titils 每一列的标题
* @param data 数据
* @param path 存放路径
* @param excelName Excel文件名称
* @throws Exception
*/
public static void createExcel(String firstRowName,List<String> titils,List<List<String>> data,String path) throws Exception {
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet = wb.createSheet("sheet1");
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
HSSFRow row1 = sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
HSSFCell cell = row1.createCell(0);
//设置单元格内容
cell.setCellValue(firstRowName);
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0,0,0,titils.size()-1));
//在sheet里创建第二行(标题栏)
HSSFRow row2 = sheet.createRow(1);
for (int i = 0; i < titils.size(); i++) {
row2.createCell(i).setCellValue(titils.get(i));
}
for (int i = 0; i < data.size(); i++) {
HSSFRow datarow = sheet.createRow(i+2);
for (int j = 0; j < data.get(i).size(); j++) {
datarow.createCell(j).setCellValue(data.get(i).get(j));
}
}
FileOutputStream output=new FileOutputStream(path);
wb.write(output);//写入磁盘
output.close();
}
//测试
public static void main(String[] args) throws Exception {
List<String> titils = new ArrayList<String>();
titils.add("名称");
titils.add("大小");
titils.add("重量");
titils.add("体重");
titils.add("长度");
titils.add("宽度");
List<List<String>> data = new ArrayList<List<String>>();
for (int i = 0; i < 10; i++) {
List<String> da = new ArrayList<String>();
da.add("21121");
da.add("12");
da.add("212");
da.add("1212");
da.add("212");
da.add("1212");
data.add(da);
}
createExcel("111", titils, data, "F:/aaaaaaaa.xlsx");
}
}