public void loadMainRequirePlan(HttpServletResponse response) throws IOException {
Map<String,Object> map=new HashMap<String,Object>();
//根据当前时间查询出数据
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
String date=/*sdf.format(new Date());*/"2018-03-04";
String date1=date+" 00:00:00";
String date2=date+" 23:59:59";
map.put("date1", date1);
map.put("date2", date2);
map.put("laboratory", laboratory);
//查询出该事件段的所有操作人员
List<VIEW_MakeWorkSheetNew> listConner=vmws.selectConnerName(map);
// 读取模板,写入数据,下载
// path是指欲下载的文件的路径。
File file = new File("C:\\Users\\谢杨华\\Desktop\\模板.xls");
// 读取文件写入数据
InputStream io = new FileInputStream(file);
HSSFWorkbook wbook = new HSSFWorkbook(io);
HSSFSheet sheetModel = wbook.getSheetAt(0);//获取到sheet模板
//隐藏Sheet
wbook.removeSheetAt(0);
for(int s=0;s<listConner.size();s++) {
HSSFSheet sheet = wbook.createSheet(listConner.get(s).getConnerUsername()+"-"+sdf.format(new Date()));
copySheet(wbook, sheetModel, sheet, sheetModel.getFirstRowNum(), sheetModel.getLastRowNum());
int num = 0;
int rows = 0;
//根据不同的操作人员查询出不同数据
map.put("connerName", listConner.get(s).getConnerUsername());
List<VIEW_MakeWorkSheetNew> list=vmws.reportExcel(map);
int a = list.size();
int max = sheet.getLastRowNum();
sheet.setDefaultRowHeightInPoints(30 * 20);
HSSFRow row = null;
HSSFCellStyle cellStyle = wbook.createCellStyle(); // 单元格样式
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
for (int i = 0; i < list.size(); i++) {
row = sheet.getRow(i + 1);
row = sheet.createRow(i + 1); // 该行无数据,创建行对象
for (int j = 0; j < 12; j++) {
row.createCell(j).setCellStyle(cellStyle);
}
row.getCell(0).setCellValue(list.get(i).getMpnum());
row.getCell(1).setCellValue(list.get(i).getCrnum());
row.getCell(2).setCellValue(list.get(i).getIoNum());
row.getCell(3).setCellValue(list.get(i).getStartTime());
row.getCell(4).setCellValue(list.get(i).getEcnend_date());
row.getCell(5).setCellValue(list.get(i).getProcedureName());
row.getCell(6).setCellValue(list.get(i).getAssignCount());
row.getCell(7).setCellValue(list.get(i).getEcnMachine());
row.getCell(8).setCellValue(list.get(i).getConnerUsername());
row.getCell(9).setCellValue(list.get(i).getBomName());
row.getCell(10).setCellValue(list.get(i).getProjectName());
row.getCell(11).setCellValue(list.get(i).getGyyq());
}
}
String name=sdf.format(new Date())+"已排计划.xls";
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
// 以流的形式下载文件。
io = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[io.available()];
io.read(buffer);
io.close();
// 清空response
response.reset();
// 设置response的Header
response.setHeader("Content-Disposition",
"attachment;filename=" + new String(name.getBytes(), "ISO-8859-1"));
response.setContentType("application/vnd.ms-excel;charset=utf-8");
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
wbook.write(toClient);
toClient.flush();
toClient.close();
}
/**
*
* @param Excel工作簿对象
* @param 模板Sheet页
* @param 新建Sheet页
* @param 模板页的第一行
* @param 模板页的最后一行
*/
private static void copySheet(HSSFWorkbook wb, HSSFSheet fromsheet, HSSFSheet newSheet, int firstrow, int lasttrow) {
// 复制一个单元格样式到新建单元格
if ((firstrow == -1) || (lasttrow == -1) || lasttrow < firstrow) {
return;
}
HSSFRow fromRow = null;
HSSFRow newRow = null;
HSSFCell newCell = null;
HSSFCell fromCell = null;
// 设置列宽
for (int i = firstrow; i < lasttrow; i++) {
fromRow = fromsheet.getRow(i);
if (fromRow != null) {
for (int j = fromRow.getLastCellNum(); j >= fromRow.getFirstCellNum(); j--) {
int colnum = fromsheet.getColumnWidth((short) j);
if (colnum > 100) {
newSheet.setColumnWidth((short) j, (short) colnum);
}
if (colnum == 0) {
newSheet.setColumnHidden((short) j, true);
} else {
newSheet.setColumnHidden((short) j, false);
}
}
break;
}
}
// 复制行并填充数据
for (int i = 0; i < lasttrow; i++) {
fromRow = fromsheet.getRow(i);
if (fromRow == null) {
continue;
}
newRow = newSheet.createRow(i - firstrow);
newRow.setHeight(fromRow.getHeight());
for (int j = fromRow.getFirstCellNum(); j < fromRow.getPhysicalNumberOfCells(); j++) {
fromCell = fromRow.getCell((short) j);
if (fromCell == null) {
continue;
}
newCell = newRow.createCell((short) j);
newCell.setCellStyle(fromCell.getCellStyle());
int cType = fromCell.getCellType();
newCell.setCellType(cType);
switch (cType) {
case HSSFCell.CELL_TYPE_STRING:
newCell.setCellValue(fromCell.getRichStringCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
newCell.setCellValue(fromCell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
newCell.setCellValue(fromCell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
newCell.setCellValue(fromCell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
newCell.setCellValue(fromCell.getErrorCellValue());
break;
default:
newCell.setCellValue(fromCell.getRichStringCellValue());
break;
}
}
}
}
Map<String,Object> map=new HashMap<String,Object>();
//根据当前时间查询出数据
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
String date=/*sdf.format(new Date());*/"2018-03-04";
String date1=date+" 00:00:00";
String date2=date+" 23:59:59";
map.put("date1", date1);
map.put("date2", date2);
map.put("laboratory", laboratory);
//查询出该事件段的所有操作人员
List<VIEW_MakeWorkSheetNew> listConner=vmws.selectConnerName(map);
// 读取模板,写入数据,下载
// path是指欲下载的文件的路径。
File file = new File("C:\\Users\\谢杨华\\Desktop\\模板.xls");
// 读取文件写入数据
InputStream io = new FileInputStream(file);
HSSFWorkbook wbook = new HSSFWorkbook(io);
HSSFSheet sheetModel = wbook.getSheetAt(0);//获取到sheet模板
//隐藏Sheet
wbook.removeSheetAt(0);
for(int s=0;s<listConner.size();s++) {
HSSFSheet sheet = wbook.createSheet(listConner.get(s).getConnerUsername()+"-"+sdf.format(new Date()));
copySheet(wbook, sheetModel, sheet, sheetModel.getFirstRowNum(), sheetModel.getLastRowNum());
int num = 0;
int rows = 0;
//根据不同的操作人员查询出不同数据
map.put("connerName", listConner.get(s).getConnerUsername());
List<VIEW_MakeWorkSheetNew> list=vmws.reportExcel(map);
int a = list.size();
int max = sheet.getLastRowNum();
sheet.setDefaultRowHeightInPoints(30 * 20);
HSSFRow row = null;
HSSFCellStyle cellStyle = wbook.createCellStyle(); // 单元格样式
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
for (int i = 0; i < list.size(); i++) {
row = sheet.getRow(i + 1);
row = sheet.createRow(i + 1); // 该行无数据,创建行对象
for (int j = 0; j < 12; j++) {
row.createCell(j).setCellStyle(cellStyle);
}
row.getCell(0).setCellValue(list.get(i).getMpnum());
row.getCell(1).setCellValue(list.get(i).getCrnum());
row.getCell(2).setCellValue(list.get(i).getIoNum());
row.getCell(3).setCellValue(list.get(i).getStartTime());
row.getCell(4).setCellValue(list.get(i).getEcnend_date());
row.getCell(5).setCellValue(list.get(i).getProcedureName());
row.getCell(6).setCellValue(list.get(i).getAssignCount());
row.getCell(7).setCellValue(list.get(i).getEcnMachine());
row.getCell(8).setCellValue(list.get(i).getConnerUsername());
row.getCell(9).setCellValue(list.get(i).getBomName());
row.getCell(10).setCellValue(list.get(i).getProjectName());
row.getCell(11).setCellValue(list.get(i).getGyyq());
}
}
String name=sdf.format(new Date())+"已排计划.xls";
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
// 以流的形式下载文件。
io = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[io.available()];
io.read(buffer);
io.close();
// 清空response
response.reset();
// 设置response的Header
response.setHeader("Content-Disposition",
"attachment;filename=" + new String(name.getBytes(), "ISO-8859-1"));
response.setContentType("application/vnd.ms-excel;charset=utf-8");
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
wbook.write(toClient);
toClient.flush();
toClient.close();
}
/**
*
* @param Excel工作簿对象
* @param 模板Sheet页
* @param 新建Sheet页
* @param 模板页的第一行
* @param 模板页的最后一行
*/
private static void copySheet(HSSFWorkbook wb, HSSFSheet fromsheet, HSSFSheet newSheet, int firstrow, int lasttrow) {
// 复制一个单元格样式到新建单元格
if ((firstrow == -1) || (lasttrow == -1) || lasttrow < firstrow) {
return;
}
HSSFRow fromRow = null;
HSSFRow newRow = null;
HSSFCell newCell = null;
HSSFCell fromCell = null;
// 设置列宽
for (int i = firstrow; i < lasttrow; i++) {
fromRow = fromsheet.getRow(i);
if (fromRow != null) {
for (int j = fromRow.getLastCellNum(); j >= fromRow.getFirstCellNum(); j--) {
int colnum = fromsheet.getColumnWidth((short) j);
if (colnum > 100) {
newSheet.setColumnWidth((short) j, (short) colnum);
}
if (colnum == 0) {
newSheet.setColumnHidden((short) j, true);
} else {
newSheet.setColumnHidden((short) j, false);
}
}
break;
}
}
// 复制行并填充数据
for (int i = 0; i < lasttrow; i++) {
fromRow = fromsheet.getRow(i);
if (fromRow == null) {
continue;
}
newRow = newSheet.createRow(i - firstrow);
newRow.setHeight(fromRow.getHeight());
for (int j = fromRow.getFirstCellNum(); j < fromRow.getPhysicalNumberOfCells(); j++) {
fromCell = fromRow.getCell((short) j);
if (fromCell == null) {
continue;
}
newCell = newRow.createCell((short) j);
newCell.setCellStyle(fromCell.getCellStyle());
int cType = fromCell.getCellType();
newCell.setCellType(cType);
switch (cType) {
case HSSFCell.CELL_TYPE_STRING:
newCell.setCellValue(fromCell.getRichStringCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
newCell.setCellValue(fromCell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
newCell.setCellValue(fromCell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
newCell.setCellValue(fromCell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
newCell.setCellValue(fromCell.getErrorCellValue());
break;
default:
newCell.setCellValue(fromCell.getRichStringCellValue());
break;
}
}
}
}