所需要的包:
poi-4.0.0.jar
poi-ooxml-4.0.0.jar
poi-ooxml-schemas-4.0.0.jar
poi-scratchpad-4.0.0.jar
xmlbeans-5.0.1.jar
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
public void getDLoadExcel() throws DocumentException, IOException, SolrServerException{
TaskBean task=addTaskAction.search(fileName);
String order=Order(task);
List<postExcelBean> posts=postDLoad_solr.searchdata(order);//获取solr数据中的list
//EXCEL
String[] title = {"原文标题","译文标题","摘要","原文","译文","采集日期","舆情来源"};
//excel文件名
String filename = fileName;
filename = fileName+".xls";
//sheet名
String sheetName = "舆情报告";
//写入EXCEL的数据
String [][] content = new String[posts.size()][title.length];
for (int i = 0; i < posts.size(); i++) {
//content[i] = new String[title.length];
content[i][0] = posts.get(i).getBt();
content[i][1] = posts.get(i).getBtyw();
content[i][2] = posts.get(i).getYqzy();
content[i][3] = posts.get(i).getZw();
content[i][4] = posts.get(i).getZwyw();
content[i][5] = posts.get(i).getZqrq();
content[i][6] = posts.get(i).getYqly();
}
//创建HSSFWorkbook
HSSFWorkbook wb = ExcelUtils.getHSSFWorkbook(sheetName, title, content, null);
//响应到客户端
try {
this.setResponseHeader(this.response, filename);
OutputStream os = this.response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
设置格式等
//有用,意如其名
public void setResponseHeader(HttpServletResponse response, String filename) {
try {
try {
filename = new String(filename.getBytes(), "utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
创建一个Excel所需读入的文件
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ExcelUtils {
public static HSSFWorkbook getHSSFWorkbook(String sheetName, String []title, String [][]values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
// style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = row.createCell(1);
cell.setCellValue(3);
HSSFFont font = wb.createFont();
font.setFontName("宋体");//设置字体名称
font.setFontHeightInPoints((short)12);//设置字号
// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
font.setBold(true);
sheet.setColumnWidth(0, 9000);
sheet.setColumnWidth(1, 9000);
sheet.setColumnWidth(2, 8000);
sheet.setColumnWidth(3, 9000);
sheet.setColumnWidth(4, 5500);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 3000);
// sheet.setColumnWidth(4, 2000);
// sheet.setColumnWidth(5, 3000);
// sheet.setColumnWidth(6, 4000);
// sheet.setColumnWidth(7, 4000);
// sheet.setColumnWidth(8, 4000);
// sheet.setColumnWidth(9, 4000);
// sheet.setColumnWidth(10, 3000);
// sheet.setColumnWidth(11, 4000);
// sheet.setColumnWidth(12, 4000);
// sheet.setColumnWidth(13, 4000);
style.setFont(font);
cell.setCellStyle(style);
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
if(values[i][j].length()>30000){
values[i][j]=values[i][j].substring(0,30000);
}
row.createCell(j).getCellStyle().setWrapText(true);//自动换行
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
/**
* 舆情检索任务下载
* @param sheetName
* @param title
* @param values
* @param wb
* @return
* @author zwh 2021年8月6日
*/
public static HSSFWorkbook getHSSFWorkbookByyqTask(String sheetName, String []title, String [][]values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = row.createCell(1);
cell.setCellValue(3);
HSSFFont font = wb.createFont();
font.setFontName("宋体");//设置字体名称
font.setFontHeightInPoints((short)12);//设置字号
//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
font.setBold(true);
sheet.setColumnWidth(0, 9000);
sheet.setColumnWidth(1, 9000);
sheet.setColumnWidth(2, 9000);
sheet.setColumnWidth(3, 20000);
sheet.setColumnWidth(4, 20000);
style.setFont(font);
cell.setCellStyle(style);
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).getCellStyle().setWrapText(true);//自动换行
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
}