`
wuhaidong
  • 浏览: 357766 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

JXL方式读取Excel

    博客分类:
  • SE
 
阅读更多

 

 

/*
 * Classname: 
 * Version information: 
 * Creator: chenjian
 * Create Date: 2007-3-21下午06:00:23
 * Copyright notice: 
 */
package nc.ui.fch.bg.t80303;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import jxl.Cell;
import jxl.CellType;
import jxl.Workbook;
import jxl.format.CellFormat;
import jxl.read.biff.BiffException;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**
 * 功能说明:
 * 
 * @author chenjian 2007-3-21 下午06:00:22
 */
public class WriteDataToExcel {

        /**
         * 
         */
        public WriteDataToExcel() {
                // TODO Auto-generated constructor stub
        }

        /**
         * 功能: 向Excel里写数据
         * 
         * @param sourceFile
         *            从服务器下载下来的源文件
         * @param newFile
         *            copy源文件得到的新文件,用于写入数据
         * @throws Exception
         * @author chenjian 2007-3-22 上午11:20:12
         */
        public static void writeData(String sourceFile, String newFile,
                        ArrayList arr) {

                Workbook wb = null;
                WritableWorkbook wwb = null;
                WritableSheet wsB = null;
                try {
                        // 创建只读的Excel工作薄的对象
                        wb = Workbook.getWorkbook(new File(sourceFile));
                        // copy上面的Excel工作薄,创建新的可写入的Excel工作薄对象
                        wwb = Workbook.createWorkbook(new File(newFile), wb);
                        // 读取工作表--(注:工作表索引从0开始)
                        wsB = wwb.getSheet(0);
                        // 循环插入数据
                        for (int i = 0; i < arr.size(); i++) {
                                ArrayList rowArr = (ArrayList) arr.get(i);
                                for (int j = 0; j < rowArr.size(); j++) {
                                        WritableCell wc = null;
                                        // 以第一行所有的列为模板,
                                        wc = wsB.getWritableCell(j, 1);
                                        WritableCellFormat wcFormat = null;
                                        if (wc.getCellFormat() != null) {
                                                // 获得源单元格格式
                                                wcFormat = new WritableCellFormat(wc.getCellFormat());
                                        } else {
                                                wcFormat = new WritableCellFormat();
                                        }
                                        wc = cloneCellWithValue(j, i + 1, rowArr.get(j),wcFormat );
                                        wsB.addCell(wc);
                                }
                        }
                        // 写入Excel对象
                        wwb.write();
                } catch (BiffException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (RowsExceededException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (WriteException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } finally {
                        // 关闭可写入的Excel对象
                        try {
                                if (null != wwb)
                                        wwb.close();
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        // 关闭只读的Excel对象
                        if (null != wb)
                                wb.close();
                }

        }

        /**
         *TODO功能 复制模板单元格的类型,并判断插入数据的类型,进行写入数据 Administrator maoyulong 2007-4-9
         * 下午03:52:04
         * 
         * @param col
         * @param row
         * @param value
         * @param wcFormat
         * @return
         */
        public static WritableCell cloneCellWithValue(int col, int row,
                        Object value, WritableCellFormat wcFormat) {
                WritableCell wc = null;
                // 判断数据是否为STRING类型,是用LABLE形式插入,否则用NUMBER形式插入
                if(value == null){
                        wc = new jxl.write.Blank(col, row, wcFormat);
                }
                else if (value instanceof String) {
                        jxl.write.Label label = new jxl.write.Label(col, row, value
                                        .toString(), wcFormat);
                        wc = label;
                } 
                else {
                        wc = new jxl.write.Number(col, row, new Double(value.toString())
                        .doubleValue(), wcFormat);
                }
                return wc;
        }
        
        /**
         * 功能:
         * 
         * @param args
         * @author chenjian 2007-3-21 下午06:00:23
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                try {
                        ArrayList q = new ArrayList();
                        ArrayList w = new ArrayList();
                        w.add("===");
                        w.add(new Double(10.00));
                        q.add(w);

                        new WriteDataToExcel().writeData("C:\\bgttemplet\\wbs.xls",
                                        "C:\\bgtreport\\wbs.xls", q);
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

}
 

 

一 JXL读日期 会把 “2009-09-09” 读为 “09-09-09”
使用以下方法解决
        private String dateFromExcel(Cell cell) {
                String data = cell.getContents();
                if (data.toString().trim().equals("")) {
                        return null;
                }
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                if (cell.getType() == CellType.DATE) {
                        DateCell dc = (DateCell) cell;
                        data = sdf.format(dc.getDate());
                } else {
                        data = data.toString().trim();
                }
                return data;
        }
 

 

 

 

package com.jxl.study;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

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;
import jxl.write.biff.RowsExceededException;

public class JXLUtil {
        private static Workbook workbook;
        private static WritableWorkbook writableWorkbook;

        /**
         * 功能:
         * <p>
         * 打印出Excel表里的全部内容
         * </p>
         * 
         * @param Excel
         *            所在的绝对路径
         */
        public static void readXLS(String filePatch) {
                if (!filePatch.endsWith(".xls")) {
                        System.out.println("=======不是正确的xls格式,请核查==========");
                        return;
                }// end if
                File file = new File(filePatch);

                // 文件只读
                file.setReadOnly();
                try {
                        // 得到Excel文件
                        workbook = Workbook.getWorkbook(file);

                        // Excel中的工作表 下表从0开始
                        Sheet sheet = workbook.getSheet(0);
                        int row = sheet.getRows(); // 工作表共有的行
                        for (int i = 0; i < row; i++) {
                                Cell[] cells = sheet.getRow(i); // 拿一行的内容
                                for (int j = 0; j < cells.length; j++) {
                                        System.out.print(cells[j].getContents() + "          ");
                                }
                                System.out.println();
                        }

                } catch (BiffException e) {
                        e.printStackTrace();
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        if (workbook != null) {
                                workbook.close();
                        }
                }

                // 还原文件状态
                file.canWrite();

        }// end function

        /**
         * 功能:
         * <p>
         * 项Excel文件里写入内容
         * </p>
         * 
         * @param Excel文件的绝对路径
         */
        public static void writeJxl(String filePatch) {
                if (!filePatch.endsWith(".xls")) {
                        System.out.println("=======不是正确的xls格式,请核查==========");
                        return;
                }// end if

                try {
                        OutputStream os = new FileOutputStream(filePatch);
                        // 创建可写簿
                        writableWorkbook = Workbook.createWorkbook(os);
                        // 创建工作表
                        WritableSheet ws = writableWorkbook.createSheet("sheet", 0);
                        // 创建一个内容 第一个整数为 列,第二个整数位 行
                        Label label;
                        for (int i = 0; i < 10; i++) {
                                for (int j = 0; j < 10; j++) {
                                        if (i == 0 && j == 0) {
                                                label = new Label(i, j, "");
                                        } else if (j == 0) {
                                                label = new Label(i, j, "第" + (i + 1) + "列");
                                        } else if (i == 0) {
                                                label = new Label(i, j, "第" + (j + 1) + "行");
                                        } else {
                                                label = new Label(i, j, "内容:" + i + "," + j);
                                        }
                                        ws.addCell(label);
                                }
                        }

                        writableWorkbook.write();
                        writableWorkbook.close();
                        os.close();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (RowsExceededException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (WriteException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } finally {
                        
                }

        }

        public static void main(String[] args) {
                writeJxl("c:\\2.xls");
        }
}
分享到:
评论
1 楼 linbaoli 2014-04-13  

相关推荐

    利用jxl读取Excel代码的完整内容,包括jar包

    本篇将详细介绍如何利用jxl库读取Excel文件,并提供一个完整的代码示例。 首先,jxl库提供了一个方便的API,让我们能够轻松地与Excel文件交互。要使用jxl,你需要下载jxl.jar文件,并将其添加到你的项目类路径中。...

    JXL 读取EXCEL

    由于提供的压缩包子文件名是"readExcel",我们可以假设这个文件可能包含了一个简单的Java程序,用于演示如何使用JXL读取Excel文件。如果你想要进一步了解或调试这个例子,可以解压文件并运行其中的代码。 总的来说...

    java利用jxl读取excel文件

    使用`jxl`库读取Excel文件主要涉及以下步骤: 1. **导入必要的库**:在Java源代码中,你需要导入`jxl`相关的包。例如: ```java import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; ...

    jxl方式生成excel表格.zip

    jxl库支持多种Excel操作,包括创建新的工作簿、添加工作表、设置单元格格式、插入公式以及读取Excel数据。这个库的使用极大地简化了在Java中处理Excel文件的工作流程。 在描述中提到的"txt转为excel Demo",这是一...

    Java操作Excel之理解JXL-读取Excel.docx

    【Java操作Excel之理解JXL-读取Excel.docx】的知识点主要集中在使用JXL库进行Excel文件的读取操作。JXL是一个Java API,专为处理Microsoft Excel文件设计,支持在任何Java兼容的操作系统上运行。以下是详细的解析: ...

    jxl读取Excel文件

    NULL 博文链接:https://zhouyq.iteye.com/blog/272883

    Java操作Excel之理解JXL-读取Excel.pdf

    在使用JXL读取Excel文件时,主要涉及三个核心对象:Workbook、Sheet和Cell。Workbook代表整个Excel文件,Sheet代表文件中的一个工作表,而Cell则代表工作表中的单个单元格。通过这些对象,我们可以按步骤完成读取...

    使用jxl读取Excel表格数据

    "使用jxl读取Excel表格数据"这个主题就是关于如何利用jxl库来实现这一目标。jxl是一个开源的Java库,它提供了对Microsoft Excel文件格式的支持,使得在Java中操作Excel变得简单。 首先,你需要获取jxl的jar包。由于...

    jxl读取excel数据(带实例)

    本文将详细介绍如何使用JXL库来读取Excel数据,并通过一个实际的代码示例进行演示。 首先,你需要在项目中引入JXL库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    jxl 读取2003 excel demo

    下面是一个简单的JXL读取Excel文件的示例代码: ```java import jxl.*; import jxl.read.biff.BiffException; import java.io.File; import java.io.IOException; public class JxlDemo { public static void ...

    jxl模版生成excel

    6. **读取Excel**:除了生成Excel文件,jxl还可以读取已有的Excel文件,将其内容转化为Java数据结构,便于处理和分析。 7. **示例代码**:通常,使用jxl的流程包括加载模板文件,找到要填充的单元格,使用`Cell....

    jxl(java读取excel表格的jar包)

    总的来说,jxl库为Java开发者提供了一种方便的方式来处理Excel文件,无论是读取现有数据还是创建新的Excel报表,都能有效地完成任务。在实际工作中,了解和掌握这种工具可以极大地提高工作效率。

    jxl用于读取Excel的Java类(个人总结综合教程,适合新入门的朋友阅读)

    ### jxl库在Java中用于读取Excel的关键知识点解析 #### 一、jxl库简介与功能 jxl是Java Excel API的一个实现,主要用于在Java应用程序中读取和写入Microsoft Excel工作簿。该库提供了丰富的API来处理Excel文档,...

    jxl读取Excel报表

    标题中的“jxl读取Excel报表”指的是利用jxl库来操作Excel文件,特别是从Excel文件中提取数据以进行分析或进一步处理。以下是对这个主题的详细讲解: 首先,`jxl.jar`是jxl库的主要组件,它支持读取和写入Microsoft...

    jxl读取excel的java代码小程序

    在这个"jxl读取excel的java代码小程序"中,我们将探讨如何利用JXL库来实现Excel文件的读取操作。 首先,我们需要在项目中引入JXL库。如果使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    操作Excel文件(读取和生成)jxl和poi

    对于读取Excel的文本描述,如`读取Excel.txt`,可能是一个记录了读取过程或结果的日志文件,具体内容会根据实际程序的实现而变化。 总的来说,JXL适合简单的Excel操作,而Apache POI则更适合处理复杂的Excel任务,...

    jxl.jar excel读取jar包

    以下是使用`jxl.jar`读取Excel文件的基本步骤: 1. 引入库:在Java源代码中,你需要引入`jxl`包: ```java import jxl.*; ``` 2. 打开工作簿:使用`Workbook`类的`Workbook.getWorkbook(File)`方法打开Excel文件。...

    jxl读写excel数据,输出图片

    使用JXL,我们可以读取Excel文件中的数据,包括文本、数字、日期等。以下是一个简单的示例,展示如何读取Excel文件: ```java WritableWorkbook workbook = Workbook.getWorkbook(new File("input.xls")); Sheet ...

    使用jxl操作Excel

    在`jxl`中,读取Excel主要涉及: - 使用`WorkbookSettings`和`Workbook`类打开Excel文件。 - 获取工作表(`Sheet`)对象。 - 遍历工作表中的行和列,获取`Cell`对象并读取其内容。 - `Cell`内容可能为文本、数字...

Global site tag (gtag.js) - Google Analytics