Java通过jxl读取Excel

package com.hd.all.test.testjava;

import java.io.File;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class ReadExcelJXL {

    public static void main(String[] args) throws BiffException, IOException {
        //Exception in thread "main" jxl.read.biff.BiffException: Unable to recognize OLE stream
        //1.不能读取2007版本的Excel;2.java生成的也不能读取

//        File file = new File("E:/students2017-10-19_10_55_55.xls");
        /**
         * 读Excel内容
         */
        File file = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\1.xls");
        Workbook wb = Workbook.getWorkbook(file);
        Sheet s = wb.getSheet("Sheet1");
        /**
         * 写Excel内容
         */
        WritableWorkbook book = Workbook.createWorkbook(new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\2.xls"));
        WritableSheet sheet = book.createSheet("Sheet1", 0);

        String reg = "1[0-9][A-Z]{2,3}[0-9]{5,6}";//匹配15KF111111
        Pattern p = Pattern.compile(reg);

        String reg1 = "100[0-9]{5}";//匹配10011111
        Pattern p1 = Pattern.compile(reg1);

        String reg2 = "2[0-9]{11}-{0,1}[0-9]{0,1}";//匹配211111111111(-n)-->211111111111-2
        Pattern p2 = Pattern.compile(reg2);

        Cell c = null;
        int i = 1;
        while(true){
            c = s.getCell(0,i);//第i行第二列,0是第一列
            Matcher m = p.matcher(c.getContents());//匹配15KF111111
            Matcher m1 = p1.matcher(c.getContents());//匹配10011111
            Matcher m2 = p2.matcher(c.getContents());//匹配211111111111
            try {
                if(m.find()){
                    sheet.addCell(new Label(2,i,m.group(0)));//如果是鼎捷料号输出
                }else{
                    if(m2.find()){
                        sheet.addCell(new Label(2,i,m2.group(0)));
                    }else{
                        if(m1.find()){
                            sheet.addCell(new Label(3,i,m1.group(0)));//如果是10011111格式的输出
                        }
                    }
                }
            } catch (Exception e) {
            }

            i++;
            if (i > 753)//Excel的行数减1
                break;
        }
        book.write();
        try {
            book.close();
        } catch (WriteException e) {
            e.printStackTrace();
        }
    }

}

原文地址:https://www.cnblogs.com/suhfj-825/p/9044656.html

时间: 2024-10-07 05:59:20

Java通过jxl读取Excel的相关文章

JAVA利用jxl读取Excel内容

JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 1 import java.io.File; 2 import java.io.FileInputStream; 3 4 import jxl.Cell; 5 import jxl.Sheet; 6 import jxl.Workbook; 7 8 9 public class testxls { 10 /** 11 * 读取xls文件内容 12 * @param file 想要读取

利用jxl读取excel合并的单元格的一个小例子

工作中我们可能要把Excel文件的记录保存到数据库, 今天我用jxl读取Excel文件时遇到了合并格的问题,记录如下: 如Excel文件如下: 读取出来的记录为: 由上图可以看出,合并的单元格只有第一次输出了,这样的话,在保存数据 到数据库时就会有数据遗漏,所以做了一定的改造,代码如下: package temp; import java.io.File; import java.io.IOException; import jxl.Range; import jxl.Sheet; import

Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传的xls文件(文件格式见下user.xls),解析不为空的行与列,写入数据库. 文件user.xls格式为: 下面来看代码实例演示: 一.前端jsp页面(本来内容很多,这里精简了) <%@ page language="java" contentType="text/htm

Java中用JXL导出Excel代码详解

jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件. 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式.使用如下:搭建环境 将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了.

分层开发之DTO和JXL读取excel写入excel

什么是DTO,为什么要DTO? 数据传输对象,简单的来说就是用户在数据库的操作中涉及到了多表的属性,pojo中单独的类不能作为传输对象.因为他只对应了操作中的一部分属性,比如有学生表(姓名,学号,班级号)班级表(班级号,班级名).当你查询某学生的班级名时,单独的学生类和班级类都不足以代表他们.因此就需要我们的dto,dto当你需要什么属性你就定义什么属性,仅作为一个传输对象. JXL的用法workbook 可写表格与只读表格 读取exce import java.io.File; import

java无依赖读取Excel文件

说到Java读取Excel文件,用得多的当然是POI或jxls,但今天在看一本书的时候.当中提到使用JdbcOdbcDriver这个驱动类在不依赖第三方库的情况下也能够完毕对Excel文件的读取操作,网上搜了一下原因然后自己写了个样例跑通了,在此记录一下. Java读取数据库大家都非常熟悉,须要一个数据源与对应的驱动.开发人员通过JDBC操作驱动.驱动再去操作数据库.那么Java读取Excel文件也是类似的.在Windows系统中,能够将一个Excel文件注冊为一个ODBC数据源,注冊过程为:

使用java程序jxl操作Excel表格

在实际开发中企业办公系统都会涉及到一个打印报表的功能,也许你的需求就是把web前端展示的员工信息以Excel表格形式打印出来 ,那么具体怎么操作下面我来实现一下 首先我们使用的是 java的jxl技术 我们需要导入jxl的jar包 如图这个jar包可以从网上下载,导入了jar包之后 我们就来认识一下java的一些抽象类以及接口 首先来认识一下WritableWorkbook抽象类 这个类位于jxl包下的 可读写的工作薄类 在认识一个抽象类Workbook抽象类此类工作薄类有个方法ceateWor

jxl读取excel浮点数据时,小数点后三位截取问题

今天导入Excel数据时,发现很多浮点数据被自动四舍五入只保留了三位,原来是jxl里对getContents()进行了封装,对数值型数据作了该处理.一般我们会对读取excel的一整套流程作为工具类,那么在读取单元格数据时,应该将数据分成三类(一般情况):日期,数值,普通字符串.最后统一转换成字符串类型. 如果是日期类型,可以使用DateCell对象提供的方法: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Cell

java利用poi读取Excel文件

java读取Excel文件,笔者认为:从结构上来看,Excel文件是由一个一个的单元格组成的,有点像细胞cell,逐行的排列.那么我们读的时候也应该逐行逐行的读,从左到右的寻找每一个cell.一.实例代码: 只是实现了一种方式,因为依照读取内容的不同,读取的后想要的操作不同,因此不能苟同全部,只是方法是相通的.说道Excel文件的结构,这货从数学的角度来说,绝对是一个二维数组,因此我就拿字符串二维数组接受读取后的内容,并每个单元格每个单元格的打印.当然也可以返回三维数组(包含该单元格的位置坐标)