import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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.hssf.util.HSSFColor;
public class MyExcelToMap {
public List<Map<String, String>> readExcel(InputStream is, String sheetName) {
System.out.println("11111111113333333333");
List<Map<String, String>> list = new ArrayList();
List<String> titleList = new ArrayList();
HSSFWorkbook workbook = null;
// 工作表
HSSFSheet sheet = null;
try {
workbook = new HSSFWorkbook(is);
} catch (Exception e) {
e.printStackTrace();
}
if (sheetName == null || sheetName.equals("")) {
sheet = workbook.getSheet("Sheet1");
} else {
sheet = workbook.getSheet(sheetName);
}
System.out.println("1111111111" + sheet.getLastRowNum());
System.out.println("222222222" + sheet.getPhysicalNumberOfRows());
String firstcell = (sheet.getRow(0).getCell(0).getStringCellValue());
System.out.println(firstcell);
int totalRows = sheet.getPhysicalNumberOfRows();
int firstNumber = sheet.getRow(0).getPhysicalNumberOfCells();
for (int n = 0; n < firstNumber; n++) {
String firstCellValue = sheet.getRow(0).getCell(n)
.getStringCellValue();
titleList.add(firstCellValue);
}
System.out.println("第二行:");
for (int i = 1; i < totalRows; i++) {
Map map = new HashMap();
int cells = sheet.getRow(i).getPhysicalNumberOfCells();
System.out.println("the" + i + "row has " + cells + "cells");
HSSFRow row = sheet.getRow(i);
String str = "";
for (int j = 0; j < titleList.size(); j++) {
System.out.println("j==========" + j);
HSSFCell cell = row.getCell((short) j);
if (cell != null) {
try {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
str = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
// 判断当前的cell是否为Date
if (HSSFDateUtil.isCellDateFormatted(cell)) {
// 如果是Date类型则,取得该Cell的Date值
Date date = cell.getDateCellValue();
// 把Date转换成本地格式的字符串
str = cell.getDateCellValue().toLocaleString();
}
// 如果是纯数字
else {
// 取得当前Cell的数值
int num = new Integer((int) cell
.getNumericCellValue());
str = String.valueOf(num);
} break;
case HSSFCell.CELL_TYPE_FORMULA:
str = String.valueOf(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
str = "";
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
break;
default:
str = "";
break;
}
} catch (Exception e) {
continue;
}
map.put(titleList.get(j), str);
str = "";
} else {
cell = row.createCell((short) j);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("");
map.put(titleList.get(j), "");
}
}
list.add(map);
System.out.println("mapmmmmmmmm="+map);
}
if (is != null) {
try {
is.close();
is = null;
} catch (IOException e) {
e.printStackTrace();
}
}
//System.out.println(titleList);
//System.out.println(list);
return list;
}
public void createNewExcel(List<Map> list, String titles, Map map,
OutputStream output) throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle style = workbook.createCellStyle();
// 在excel中新建一个工作表,名字为jsp
HSSFSheet sheet = workbook.createSheet("data");
/**
* 设置其它数据 设置风格
*/
style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体
style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setLeftBorderColor(HSSFColor.BLACK.index);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setRightBorderColor(HSSFColor.BLACK.index);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setTopBorderColor(HSSFColor.BLACK.index);
// style.setWrapText(true);//文本区域随内容多少自动调整
int cellNumber = list.get(0).size();
int rowNumber = list.size();
System.out.println("行数======" + rowNumber);
System.out.println("列数======" + cellNumber);
// 创建第一行
HSSFRow row1 = sheet.createRow(0);
// 创建第一列
Map firstMap = list.get(0);
Iterator it = firstMap.keySet().iterator();
String[] title = titles.split(",");
for (int i = 0; i < title.length; i++) {
HSSFCell cell = row1.createCell(i);
cell.setCellValue((String) map.get(title[i]));
cell.setCellStyle(style);
}
for (int rown = 0; rown < rowNumber; rown++) {
HSSFRow row = sheet.createRow(rown + 1);
for (int celln = 0; celln < cellNumber; celln++) {
Map cellMap = (Map) list.get(rown);
HSSFCell cell = row.createCell(celln);
cell.setCellValue((String) cellMap.get(title[celln]));
cell.setCellStyle(style);
}
}
output.flush();
workbook.write(output);
output.close();
}
}
java poi导出list数据到excel
最新推荐文章于 2024-08-01 10:52:45 发布