ExcelOperater.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package qh.lqg.utils;
  2. import java.io.BufferedReader;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.regex.Matcher;
  10. import java.util.regex.Pattern;
  11. /**
  12. * ClassName: ExcelOperater <br/>
  13. * Function: Excel操作类. <br/>
  14. * date: 2016年8月7日 上午10:24:23 <br/>
  15. *
  16. * @author liuyuqi
  17. * @version
  18. * @since JDK 1.7
  19. */
  20. public class ExcelOperater {
  21. private InputStreamReader isr = null;
  22. private BufferedReader br = null;
  23. public ExcelOperater(String file) throws FileNotFoundException {
  24. isr = new InputStreamReader(new FileInputStream(file));
  25. }
  26. /**
  27. * readCSVFile:(解析csv文件 到一个list中 每个单元个为一个String类型记录,每一行为一个list。
  28. * 再将所有的行放到一个总list中 ). <br/>
  29. *
  30. * @author liuyuqi
  31. * @return
  32. * @throws IOException
  33. * @since JDK 1.7
  34. */
  35. public List<List<String>> readCSVFile() throws IOException {
  36. br = new BufferedReader(isr);
  37. String rec = null;// 一行
  38. String str;// 一个单元格
  39. List<List<String>> listFile = new ArrayList<List<String>>();
  40. try {
  41. // 读取一行
  42. while ((rec = br.readLine()) != null) {
  43. Pattern pCells = Pattern
  44. .compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");
  45. Matcher mCells = pCells.matcher(rec);
  46. List<String> cells = new ArrayList<String>();// 每行记录一个list
  47. // 读取每个单元格
  48. while (mCells.find()) {
  49. str = mCells.group();
  50. str = str.replaceAll(
  51. "(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
  52. str = str.replaceAll("(?sm)(\"(\"))", "$2");
  53. cells.add(str);
  54. }
  55. listFile.add(cells);
  56. }
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. } finally {
  60. if (isr != null) {
  61. isr.close();
  62. }
  63. if (br != null) {
  64. br.close();
  65. }
  66. }
  67. return listFile;
  68. }
  69. }