java poi导出list数据到excel

这个Java程序展示了如何使用Apache POI库来读取Excel文件的数据,并将其存储为List<Map<String, String>>。同时,它还演示了如何创建新的Excel文件,将数据写入并设置单元格样式。" 139125339,7556998,Android NDK开发:C++基础知识详解,"['Android开发', 'C++', 'NDK', '音视频开发']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
 }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值