java中的excel操作
导入jxl.jar包: 下载个jxl.jar包,然后这个包放在什么位置都行,在你的项目中导入这个包就可以.
具体做法:
项目上右键,点击“属性”,
类别那里选择”库“,点击"添加jar文件”
在弹出的文件选择对话框选择你的jxl.jar就OK了
- package publicData;
- /*
- * Created on 2013-12-5
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
- */
- import java.io.BufferedInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- import org.apache.poi.hssf.usermodel.HSSFCell;
- 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.poifs.filesystem.POIFSFileSystem;
- public class InputExcel {
- //public static String[][] result;
- /*
- public static void main(String[] args) {
- String path="C:\\Users\\pclxz\\Desktop\\心协软件\\初品4(在这修改)\\首访记录.xls";//文件路径
- try {
- File files = new File(path);
- String[][] result = getData(files, 2);
- if (result != null) {
- int rowLength = result.length;
- for (int i = 0; i < rowLength; i++) {
- for (int j = 0; j < result[i].length; j++) {
- System.out.println(result[i][j]+"单元格ID:"+i+" "+j);
- }
- System.out.println();
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- */
- public static void getExcel(String[][] result, String path) {
- try {
- File files = new File(path);
- result = getData(files, 2);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static String[][] getData(File file, int firstrow)
- throws FileNotFoundException, IOException {
- List<String[]> result = new ArrayList<String[]>();
- int rowSize = 0;
- BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
- POIFSFileSystem fs = new POIFSFileSystem(in);
- HSSFWorkbook wb = new HSSFWorkbook(fs);//工作表
- HSSFCell cell = null;
- //遍历工作表里的所有工作簿
- for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
- HSSFSheet st = wb.getSheetAt(sheetIndex); //得到工作簿
- //遍历工作簿st的row
- for (int rowIndex = firstrow; rowIndex <= st.getLastRowNum(); rowIndex++) {
- HSSFRow row = st.getRow(rowIndex);//row
- if (row == null) {
- continue;
- }
- //int tempRowSize = row.getLastCellNum() + 1;//该row的数组大小
- int tempRowSize = row.getLastCellNum() ;//该row的数组大小
- if (tempRowSize > rowSize) {
- rowSize = tempRowSize;
- }
- //System.out.println(rowSize);
- String[] values = new String[rowSize];//存放一个row的实例
- Arrays.fill(values, "");
- boolean hasValue = false;
- //读取一个row的实例并存放进values
- //System.out.println(row.getLastCellNum());
- for (short columnIndex = 0; columnIndex < row.getLastCellNum(); columnIndex++) {
- String value = "";
- cell = row.getCell(columnIndex);//row对应column的单元格cell
- //判断cell类型并相应存储
- if (cell != null) {
- switch (cell.getCellType()) {
- case HSSFCell.CELL_TYPE_STRING://读取的格式为字符串
- value = cell.getStringCellValue();
- break;
- case HSSFCell.CELL_TYPE_NUMERIC://读取的格式为数组
- //如果格式为日期格式,自定义格式输出
- if (HSSFDateUtil.isCellDateFormatted(cell)) {
- Date date = cell.getDateCellValue();
- if (date != null) {
- value = new SimpleDateFormat("yyyy-MM-dd")
- .format(date);
- } else {
- value = "";
- }
- } else {
- //如果格式为数值,自定义格式输出
- value = new DecimalFormat("0.00").format(cell
- .getNumericCellValue());
- }
- break;
- case HSSFCell.CELL_TYPE_FORMULA:
- // 导入时如果为公式生成的数据则无值
- value = "";
- break;
- // 导入时如果为空
- case HSSFCell.CELL_TYPE_BLANK:
- break;
- case HSSFCell.CELL_TYPE_ERROR:
- value = "";
- break;
- // 导入时如果为BOOLEAN型 自定义格式输出
- case HSSFCell.CELL_TYPE_BOOLEAN:
- value = (cell.getBooleanCellValue() == true ? "Y"
- : "N");
- break;
- default:
- value = "";
- }
- }
- values[columnIndex] = rightTrim(value);//去掉字符串右边的空格,并赋值
- hasValue = true;
- }
- //一个row的实例values存入result
- if (hasValue) {
- result.add(values);
- }
- }
- in.close();
- String[][] returnArray = new String[result.size()][rowSize];
- for (int i = 0; i < returnArray.length; i++) {
- returnArray[i] = (String[]) result.get(i);
- }
- return returnArray;
- }
- return null;
- }
- /**
- * 去掉字符串右边的空格
- *
- * @param str 要处理的字符串
- * @return 处理后的字符串
- */
- public static String rightTrim(String str) {
- if (str == null) {
- return "";
- }
- int length = str.length();
- for (int i = length - 1; i >= 0; i--) {
- if (str.charAt(i) != 0x20) {
- break;
- }
- length--;
- }
- return str.substring(0, length);
- }
- }
java中的excel操作的更多相关文章
- 报表中的Excel操作之Aspose.Cells(Excel模板)
原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...
- JAVA中的时间操作
java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...
- java中的集合操作类(未完待续)
申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...
- JAVA中通过Jedis操作Redis连接与插入简单库
一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...
- Java中的文件操作(一)RandomAccessFile
今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...
- Java并发--Java中的CAS操作和实现原理
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/CringKong/article/deta ...
- Java中的字符串操作(比较String,StringBuiler和StringBuffer)
一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己 ...
- Java中的IO操作和缓冲区
目录 Java中的IO操作和缓冲区 一.简述 二.IO流的介绍 什么是流 输入输出流的作用范围 三.Java中的字节流和字符流 字节流 字符流 二者的联系 1.InputStreamReader 2. ...
- JAVA中生成Excel方法
java 操作 Excel 最常用的就是JXL(java excel api)和POI,今先看下JXL吧.首先可以到 http://www.andykhan.com/jexcelapi/downloa ...
随机推荐
- [转]从 Apple TV 看电视的进化
电视被许多人吐槽为 “几十年没变过的东西”,因此苹果也被寄予厚望能改变这件事物.可惜的是,这种期望在空中飘了这么久,苹果也没玩出多少花样,直到这次发布会 Apple TV 才有了一些值得期待的改进. ...
- Map接口之HashMap,LinkedHashMap,TreeMap
Map与Collection 并列存在,用于保存具有映射关系的数据:Key-Value Map中的Key和Value都可以是任何引用类型的数据 Map中的Key用Set存放,不允许重复,即同一个Map ...
- AtomicLong AtomicDouble AtomicInteger
Atomic+数字类型 大多都持有一个静态的Unsafe对象,通过unsafe 对属性在类对象的offset cas直接操作物理内存实现对数据的修改 public class AtomicLong e ...
- php动态安装扩展
下面以安装phpredis扩展为例 下载扩展源码,解压 [root@localhost ~]# wget phpredis-5.1.1.tar.gz [root@localhost ~]# tar - ...
- Rocket - tilelink - WidthWidget
https://mp.weixin.qq.com/s/pmJcsRMviJZjMwlwYw6OgA 简单介绍WidthWidget的实现. 1. 基本介绍 用于设定与上游节点连接 ...
- Rocket - util - Annotations
https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg 介绍util中定义的注解(Annotations). 1. Annotation ...
- Chisel3 - Scala语言专家
https://mp.weixin.qq.com/s/j8mt_qvwliKIKtlN6JcyqQ 介绍Intellij IDEA安装Scala插件后,如何在阅读和编码两方面助益开发者. ...
- ASP.NET关于书籍详情和删除的Demo(HttpHandler进行页面静态化[自动生成html网页]+Entity Framework通过类创建数据库+EF删查)
这次的Demo如标题所示, 首先第一步EF创建数据库 创建两个类,一个是图书类,一个是图书类别的类 using System; using System.Collections.Generic; us ...
- Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...
- Java实现 LeetCode 383 赎金信
383. 赎金信 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成.如果可以构成,返回 t ...