黑马程序员技术交流社区

标题: poi读写excel [打印本页]

作者: 乔兵    时间: 2013-10-7 18:44
标题: poi读写excel
(转载)

试试用POI操作excel
纯粹为了自己好找.
要有人看了这些的话,随意就好啦...欢迎指出不当之处.
  1. package xls;

  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStreamWriter;
  7. import java.io.UnsupportedEncodingException;
  8. import java.text.SimpleDateFormat;
  9. import java.util.ArrayList;
  10. import java.util.Date;
  11. import java.util.List;

  12. import org.apache.poi.hssf.usermodel.HSSFCell;
  13. import org.apache.poi.hssf.usermodel.HSSFRow;
  14. import org.apache.poi.hssf.usermodel.HSSFSheet;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;

  16. public class ReadXL
  17. {
  18.     public static String fileName = "C:\\xls\\EXCEL.xls";
  19.     public static String path = "C:\\xls\\"; //为方便,就这样写了.
  20.     public static void main(String argv[])
  21.     {
  22.         List list = readExcel();
  23.         String xmldata = buildXML(list);
  24.         createXMLFile(xmldata);
  25.     }

  26.     /**
  27.      * 读取磁盘上的EXCEL文件的内容
  28.      * @return List
  29.      */
  30.     public static List readExcel()
  31.     {
  32.         List list = null;
  33.         UserBean ub = null;
  34.         try
  35.         {
  36.             HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
  37.                     fileName)); //得到excel对象
  38.             HSSFSheet sheet = workbook.getSheetAt(0); //得到第一个sheet
  39.             int rows = sheet.getPhysicalNumberOfRows(); //得到行数
  40.             list = new ArrayList();
  41.             for (int i = 1; i < rows; i++)
  42.             {
  43.                 HSSFRow row = sheet.getRow(i);
  44.                 ub = new UserBean();
  45.                 HSSFCell cell = row.getCell((short) 0); //得到列0(下标0,为第一列)
  46.                 ub.setName(cell.getStringCellValue());
  47.                 cell = row.getCell((short) 1); //得到列 1
  48.                 ub.setEmail(cell.getStringCellValue());
  49.                 cell = row.getCell((short) 2); //得到列2
  50.                 ub.setPhone(cell.getStringCellValue());
  51.                 cell = row.getCell((short) 3); //得到列3
  52.                 ub.setPasswd(cell.getStringCellValue());
  53.                 list.add(ub);
  54.             }
  55.             return list;
  56.         }
  57.         catch (Exception e)
  58.         {
  59.             return null;
  60.         }
  61.     }

  62.     /**
  63.      * 组装xml格式字符串
  64.      * @param list List
  65.      * @return String
  66.      */
  67.     public static String buildXML(List list)
  68.     {
  69.         StringBuffer sb = new StringBuffer();
  70.         sb.append("<contents-list>\n\t");
  71.         sb.append("<content>\n\t\t");
  72.         for (int i = 0; i < list.size(); i++)
  73.         {
  74.             UserBean bean = (UserBean) list.get(i);
  75.             sb.append("<userinfo>\n\t\t\t");
  76.             sb.append("<name>" + bean.getName() + "</name>\n\t\t\t");
  77.             sb.append("<email>" + bean.getEmail() + "</email>\n\t\t\t");
  78.             sb.append("<phone>" + bean.getPhone() + "</phone>\n\t\t\t");
  79.             sb.append("<passwd>" + bean.getPasswd() + "</passwd>\n\t\t");
  80.             if (i + 1 < list.size())
  81.             {
  82.                 sb.append("</userinfo>\n\t\t");
  83.             }
  84.             else
  85.             {
  86.                 sb.append("</userinfo>\n\t");
  87.             }
  88.         }
  89.         sb.append("</content>\n");
  90.         sb.append("</contents-list>");
  91.         return sb.toString();
  92.     }


  93.     /**
  94.      * 输出到文件
  95.      * @param xmldata String
  96.      */
  97.     public static void createXMLFile(String xmldata)
  98.     {
  99.         String createTime = createTime();
  100.         String filename = path + createTime + ".xml";
  101.         OutputStreamWriter osw = null;
  102.         FileOutputStream output = null;
  103.         try
  104.         {
  105.             output = new FileOutputStream(filename);
  106.             osw = new OutputStreamWriter(output, "utf-8");
  107.             osw.write(xmldata);
  108.             osw.flush();
  109.         }
  110.         catch (Exception ex)
  111.         {
  112.         }        
  113.         finally
  114.         {
  115.             try
  116.             {
  117.                 if (null != output)
  118.                 {
  119.                     output.close();
  120.                 }
  121.             }
  122.             catch (IOException ex2)
  123.             {
  124.             }
  125.             try
  126.             {
  127.                 if (null != osw)
  128.                 {
  129.                     osw.close();
  130.                 }
  131.             }
  132.             catch (IOException ex3)
  133.             {
  134.             }
  135.         }
  136.     }

  137.     /**
  138.      * 用时间作为文件名
  139.      * @return String
  140.      */
  141.     public static String createTime()
  142.     {
  143.         Date date = new Date();
  144.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddmmss");
  145.         String createTime = dateFormat.format(date);
  146.         return createTime;
  147.     }

  148. }
复制代码
再就一个UserBean,就几个属性.


作者: 张慧    时间: 2013-10-7 20:22
不错,有学到。。
作者: 王一勇    时间: 2014-8-6 23:50
找了好久了,终于在这儿发现了,楼主能罗例出,操作excel的一些主要方法就最好了。
作者: huiyifan    时间: 2015-9-23 19:08
                                                                .




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2