导入jxl.jar包: 下载个jxl.jar包,然后这个包放在什么位置都行,在你的项目中导入这个包就可以.  
 具体做法:

  项目上右键,点击“属性”,
  类别那里选择”库“,点击"添加jar文件”
  在弹出的文件选择对话框选择你的jxl.jar就OK了

  1. package publicData;
  2.  
  3. /*
  4. * Created on 2013-12-5
  5. *
  6. * TODO To change the template for this generated file go to
  7. * Window - Preferences - Java - Code Style - Code Templates
  8. */
  9.  
  10. import java.io.BufferedInputStream;
  11. import java.io.File;
  12. import java.io.FileInputStream;
  13. import java.io.FileNotFoundException;
  14. import java.io.IOException;
  15. import java.text.DecimalFormat;
  16. import java.text.SimpleDateFormat;
  17. import java.util.ArrayList;
  18. import java.util.Arrays;
  19. import java.util.Date;
  20. import java.util.List;
  21.  
  22. import org.apache.poi.hssf.usermodel.HSSFCell;
  23. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  24. import org.apache.poi.hssf.usermodel.HSSFRow;
  25. import org.apache.poi.hssf.usermodel.HSSFSheet;
  26. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  27. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  28.  
  29. public class InputExcel {
  30.  
  31. //public static String[][] result;
  32.  
  33. /*
  34. public static void main(String[] args) {
  35.  
  36. String path="C:\\Users\\pclxz\\Desktop\\心协软件\\初品4(在这修改)\\首访记录.xls";//文件路径
  37. try {
  38. File files = new File(path);
  39. String[][] result = getData(files, 2);
  40. if (result != null) {
  41. int rowLength = result.length;
  42. for (int i = 0; i < rowLength; i++) {
  43. for (int j = 0; j < result[i].length; j++) {
  44. System.out.println(result[i][j]+"单元格ID:"+i+" "+j);
  45. }
  46. System.out.println();
  47. }
  48. }
  49. } catch (Exception e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. */
  54.  
  55. public static void getExcel(String[][] result, String path) {
  56.  
  57. try {
  58. File files = new File(path);
  59. result = getData(files, 2);
  60. } catch (Exception e) {
  61. e.printStackTrace();
  62. }
  63. }
  64.  
  65. public static String[][] getData(File file, int firstrow)
  66. throws FileNotFoundException, IOException {
  67.  
  68. List<String[]> result = new ArrayList<String[]>();
  69. int rowSize = 0;
  70. BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
  71. POIFSFileSystem fs = new POIFSFileSystem(in);
  72. HSSFWorkbook wb = new HSSFWorkbook(fs);//工作表
  73. HSSFCell cell = null;
  74. //遍历工作表里的所有工作簿
  75. for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
  76.  
  77. HSSFSheet st = wb.getSheetAt(sheetIndex); //得到工作簿
  78. //遍历工作簿st的row
  79. for (int rowIndex = firstrow; rowIndex <= st.getLastRowNum(); rowIndex++) {
  80.  
  81. HSSFRow row = st.getRow(rowIndex);//row
  82. if (row == null) {
  83. continue;
  84. }
  85.  
  86. //int tempRowSize = row.getLastCellNum() + 1;//该row的数组大小
  87. int tempRowSize = row.getLastCellNum() ;//该row的数组大小
  88. if (tempRowSize > rowSize) {
  89. rowSize = tempRowSize;
  90. }
  91. //System.out.println(rowSize);
  92. String[] values = new String[rowSize];//存放一个row的实例
  93. Arrays.fill(values, "");
  94. boolean hasValue = false;
  95. //读取一个row的实例并存放进values
  96. //System.out.println(row.getLastCellNum());
  97. for (short columnIndex = 0; columnIndex < row.getLastCellNum(); columnIndex++) {
  98. String value = "";
  99. cell = row.getCell(columnIndex);//row对应column的单元格cell
  100. //判断cell类型并相应存储
  101. if (cell != null) {
  102. switch (cell.getCellType()) {
  103. case HSSFCell.CELL_TYPE_STRING://读取的格式为字符串
  104. value = cell.getStringCellValue();
  105. break;
  106. case HSSFCell.CELL_TYPE_NUMERIC://读取的格式为数组
  107. //如果格式为日期格式,自定义格式输出
  108. if (HSSFDateUtil.isCellDateFormatted(cell)) {
  109. Date date = cell.getDateCellValue();
  110. if (date != null) {
  111. value = new SimpleDateFormat("yyyy-MM-dd")
  112. .format(date);
  113. } else {
  114. value = "";
  115. }
  116. } else {
  117. //如果格式为数值,自定义格式输出
  118. value = new DecimalFormat("0.00").format(cell
  119. .getNumericCellValue());
  120. }
  121. break;
  122. case HSSFCell.CELL_TYPE_FORMULA:
  123. // 导入时如果为公式生成的数据则无值
  124. value = "";
  125. break;
  126. // 导入时如果为空
  127. case HSSFCell.CELL_TYPE_BLANK:
  128. break;
  129. case HSSFCell.CELL_TYPE_ERROR:
  130. value = "";
  131. break;
  132. // 导入时如果为BOOLEAN型 自定义格式输出
  133. case HSSFCell.CELL_TYPE_BOOLEAN:
  134. value = (cell.getBooleanCellValue() == true ? "Y"
  135. : "N");
  136. break;
  137. default:
  138. value = "";
  139. }
  140. }
  141.  
  142. values[columnIndex] = rightTrim(value);//去掉字符串右边的空格,并赋值
  143. hasValue = true;
  144. }
  145.  
  146. //一个row的实例values存入result
  147. if (hasValue) {
  148. result.add(values);
  149. }
  150.  
  151. }
  152.  
  153. in.close();
  154. String[][] returnArray = new String[result.size()][rowSize];
  155. for (int i = 0; i < returnArray.length; i++) {
  156. returnArray[i] = (String[]) result.get(i);
  157. }
  158. return returnArray;
  159. }
  160. return null;
  161.  
  162. }
  163.  
  164. /**
  165. * 去掉字符串右边的空格
  166. *
  167. * @param str 要处理的字符串
  168. * @return 处理后的字符串
  169. */
  170. public static String rightTrim(String str) {
  171. if (str == null) {
  172. return "";
  173. }
  174. int length = str.length();
  175. for (int i = length - 1; i >= 0; i--) {
  176. if (str.charAt(i) != 0x20) {
  177. break;
  178. }
  179. length--;
  180. }
  181. return str.substring(0, length);
  182. }
  183.  
  184. }

java中的excel操作的更多相关文章

  1. 报表中的Excel操作之Aspose.Cells(Excel模板)

    原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...

  2. JAVA中的时间操作

    java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...

  3. java中的集合操作类(未完待续)

    申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...

  4. JAVA中通过Jedis操作Redis连接与插入简单库

    一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...

  5. Java中的文件操作(一)RandomAccessFile

    今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...

  6. Java并发--Java中的CAS操作和实现原理

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/CringKong/article/deta ...

  7. Java中的字符串操作(比较String,StringBuiler和StringBuffer)

    一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己 ...

  8. Java中的IO操作和缓冲区

    目录 Java中的IO操作和缓冲区 一.简述 二.IO流的介绍 什么是流 输入输出流的作用范围 三.Java中的字节流和字符流 字节流 字符流 二者的联系 1.InputStreamReader 2. ...

  9. JAVA中生成Excel方法

    java 操作 Excel 最常用的就是JXL(java excel api)和POI,今先看下JXL吧.首先可以到 http://www.andykhan.com/jexcelapi/downloa ...

随机推荐

  1. [转]从 Apple TV 看电视的进化

    电视被许多人吐槽为 “几十年没变过的东西”,因此苹果也被寄予厚望能改变这件事物.可惜的是,这种期望在空中飘了这么久,苹果也没玩出多少花样,直到这次发布会 Apple TV 才有了一些值得期待的改进. ...

  2. Map接口之HashMap,LinkedHashMap,TreeMap

    Map与Collection 并列存在,用于保存具有映射关系的数据:Key-Value Map中的Key和Value都可以是任何引用类型的数据 Map中的Key用Set存放,不允许重复,即同一个Map ...

  3. AtomicLong AtomicDouble AtomicInteger

    Atomic+数字类型 大多都持有一个静态的Unsafe对象,通过unsafe 对属性在类对象的offset cas直接操作物理内存实现对数据的修改 public class AtomicLong e ...

  4. php动态安装扩展

    下面以安装phpredis扩展为例 下载扩展源码,解压 [root@localhost ~]# wget phpredis-5.1.1.tar.gz [root@localhost ~]# tar - ...

  5. Rocket - tilelink - WidthWidget

    https://mp.weixin.qq.com/s/pmJcsRMviJZjMwlwYw6OgA   简单介绍WidthWidget的实现.   ​​   1. 基本介绍   用于设定与上游节点连接 ...

  6. Rocket - util - Annotations

    https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg   介绍util中定义的注解(Annotations).   ​​   1. Annotation ...

  7. Chisel3 - Scala语言专家

    https://mp.weixin.qq.com/s/j8mt_qvwliKIKtlN6JcyqQ   介绍Intellij IDEA安装Scala插件后,如何在阅读和编码两方面助益开发者.     ...

  8. ASP.NET关于书籍详情和删除的Demo(HttpHandler进行页面静态化[自动生成html网页]+Entity Framework通过类创建数据库+EF删查)

    这次的Demo如标题所示, 首先第一步EF创建数据库 创建两个类,一个是图书类,一个是图书类别的类 using System; using System.Collections.Generic; us ...

  9. Java 第十一届 蓝桥杯 省模拟赛 小明的城堡

    小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...

  10. Java实现 LeetCode 383 赎金信

    383. 赎金信 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成.如果可以构成,返回 t ...