`
jyangzi5
  • 浏览: 212267 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

jxl 对Excel的读写改操作

    博客分类:
  • IO
阅读更多

 

 

package cn.com.jyangzi;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.NumberFormat;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/**
 * jxl 读取
 * @author Michael sun
 */
public class JxlTest {

    /**
     * 读取 excel 文件
     * @param filePath
     * @throws Exception
     */
    private void readExcel(String filePath) throws Exception {
        InputStream is = null;
        Workbook workbook = null;
        try {
            is = new FileInputStream(filePath);
            workbook = Workbook.getWorkbook(is);
            // sheet row column 下标都是从0开始的
            Sheet sheet = workbook.getSheet(0);

            int column = sheet.getColumns();
            int row = sheet.getRows();
            System.out.println("共有" + row + "行," + column + "列数据");

            for(int r=0;r<row;r++)
         {
             for(int c=0;c<column;c++)
             {
             
               // A1是字符
                    Cell cell = sheet.getCell(c, r);
                   System.out.print("A1 type:" + cell.getType());
                    //if (cell.getType().equals(CellType.LABEL)) {
                        System.out.print(" " + cell.getContents());
                    //}
             }
             System.out.println("");
            }
           
//            // A1是字符
//            Cell cellA1 = sheet.getCell(0, 0);
//            System.out.println("A1 type:" + cellA1.getType());
//            if (cellA1.getType().equals(CellType.LABEL)) {
//                System.out.println("A1 content:" + cellA1.getContents());
//            }
//
//            // B1是数字
//            Cell cellB1 = sheet.getCell(1, 0);
//            System.out.println("B1 type:" + cellB1.getType());
//            if (cellB1.getType().equals(CellType.NUMBER)) {
//                NumberCell numberCell = (NumberCell) cellB1;
//                double douval = numberCell.getValue();
//                System.out.println("B1 value:" + douval);
//            }
//
//            // C1是日期
//            Cell cellC1 = sheet.getCell(2, 0);
//            System.out.println("C1 type:" + cellC1.getType());
//            if (cellC1.getType().equals(CellType.DATE)) {
//                DateCell dateCell = (DateCell) cellC1;
//                Date date =dateCell.getDate();
//                System.out.println("C1 date:" + date);
//            }

            // 操作完成时,关闭对象,释放占用的内存空间
            workbook.close();
            is.close();
        } catch (Exception e) {
            e.printStackTrace(System.out);
        } finally {
            if (is != null) {
                is.close();
            }
        }
    }


     /** 
     * 写入 excel 文件 
     * @param filePath 
     * @throws Exception 
     */ 
    private void writeExcel(String filePath) throws Exception {  
        OutputStream os = null;  
        try {  
  System.out.println("ddd");
            // 构建Workbook对象  
            os = new FileOutputStream(filePath);  
            WritableWorkbook wwb = Workbook.createWorkbook(os);    
            // 构建Excel sheet  
            WritableSheet sheet = wwb.createSheet("test write sheet", 0);  
            // 设置标题格式  
            WritableFont wfTitle = new jxl.write.WritableFont(  
                    WritableFont.ARIAL, 18, WritableFont.BOLD, true);  
            WritableCellFormat wcfTitle = new WritableCellFormat(wfTitle);  
            // 设置水平对齐方式  
            wcfTitle.setAlignment(Alignment.CENTRE);  
            // 设置垂直对齐方式  
            wcfTitle.setVerticalAlignment(VerticalAlignment.CENTRE);  
            // 设置是否自动换行  
            wcfTitle.setWrap(true);  
            // 合并A1->C2  
            sheet.mergeCells(0, 0, 2, 1);  
            Label titleCell = new Label(0, 0, "Title Cell ", wcfTitle);  
            sheet.addCell(titleCell);  
 
            WritableFont wf = new WritableFont(WritableFont.ARIAL, 10,  
                    WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,  
                    Colour.BLUE);  
            WritableCellFormat wcf = new WritableCellFormat(wf);  
 
            // A3  
            Label labelCell = new Label(0, 2, "Label Cell ");  
            sheet.addCell(labelCell);  
            // B3  
            Label labelCellFmt = new Label(1, 2,  
                    "Label Cell with WritableCellFormat ", wcf);  
            sheet.addCell(labelCellFmt);  
 
            // A4 添加jxl.write.Number对象  
            jxl.write.Number labelN = new jxl.write.Number(0, 3, 3.1415926);  
            sheet.addCell(labelN);  
            // B4 添加Number对象 jxl.write.NumberFormat  
            NumberFormat nf = new NumberFormat("#.##");  
            WritableCellFormat wcfN = new WritableCellFormat(nf);  
            jxl.write.Number labelNF = new jxl.write.Number(1, 3, 3.1415926,  
                    wcfN);  
            sheet.addCell(labelNF);  
 
            // A5 添加jxl.write.Boolean对象  
            jxl.write.Boolean labelB = new jxl.write.Boolean(0, 4, true);  
            sheet.addCell(labelB);  
 
            // A6 添加 jxl.write.DateTime对象  
            jxl.write.DateTime labelDT =
             new jxl.write.DateTime(0, 5, new Date());  
            sheet.addCell(labelDT);  
            // B6 添加DateTime对象 jxl.write.DateFormat  
            jxl.write.DateFormat df = new jxl.write.DateFormat(  
                    "yyyy-MM-dd HH:mm:ss");  
            WritableCellFormat wcfDF = new WritableCellFormat(df);  
            jxl.write.DateTime labelDTF =
             new jxl.write.DateTime(1, 5, new Date(), wcfDF);  
            sheet.addCell(labelDTF);  
            //先调用write();再调用close();  
            wwb.write();  
            wwb.close();  
            os.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            if (null != os) {  
                os.close();  
            }  
        }  
 
    } 
   
    /**
     * 插入图片
     * @param filePath
     * @throws Exception
     */
    private void writeImg(String filePath) throws Exception {  
      
        OutputStream os = null;  
        try {  
            String imgPath = "K:\\网厅项目文件\\网厅\\需求\\IMG_0537.png";  
            os = new FileOutputStream(filePath);  
            WritableWorkbook wwb = Workbook.createWorkbook(os);  
            WritableSheet ws = wwb.createSheet("write img", 0);  
            File imgFile = new File(imgPath);  
 
            // WritableImage(col, row, width, height, imgFile);  
            WritableImage image = new WritableImage(2, 1, 8, 20, imgFile);  
            ws.addImage(image);  
            wwb.write();  
            wwb.close();  
 
        } catch (Exception e) {  
            System.out.println(e);  
        } finally {  
            if (null != os) {  
                os.close();  
            }  
        }  
    }  
 

    /** 
     * 更新Excel
     * @param filePath 
     */ 
    private void doUpdate(String filePath) {  
 
        try {  
            // 获得原Excel文件  
            Workbook wb = Workbook.getWorkbook(new File(filePath));  
            // 打开一个文件的副本,并且指定数据写回到原文件  
            WritableWorkbook wwb = Workbook.createWorkbook(new File(filePath),wb);  
            // 对第一个工作簿的A1 更新  
            WritableSheet wsheet0 = wwb.getSheet(0);  
            WritableCell wc00 = wsheet0.getWritableCell(0, 0);  
            if (wc00.getType() == CellType.LABEL) {  
                Label label00 = (Label) wc00;  
                label00.setString("updata data");  
            }  
            // 添加一个工作表  
            WritableSheet sheet = wwb.createSheet("新增工作簿", 1);  
            // 写入一些测试数据  
            sheet.addCell(new Label(0, 0, "test data"));  
 
            // 关闭工作薄对象  
            wwb.write();  
            wwb.close();  
            wb.close();  
        } catch (Exception e) {  
            System.out.println(e);  
        }  
    }  

    //----------------------------main()方法-----------------------------
        
    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
     
     JxlTest jxltest = new JxlTest();
     /**
      * 读文件
      */
        String filePath = "K:\\网厅项目文件\\网厅\\需求\\read.xls";
        jxltest.readExcel(filePath);
       
        /**
         * 写文件
         */
        String filePath2 = "K:\\网厅项目文件\\网厅\\需求\\write.xls";  
        jxltest.writeExcel(filePath2);  
        
        /**
         * 插入图片
         */
       
        String filePath3 = "K:\\网厅项目文件\\网厅\\需求\\img.xls";  
        jxltest.writeImg(filePath3);  
       
        /**
         *更新Excel
         */
       
        String filePath4 = "K:\\网厅项目文件\\网厅\\需求\\read.xls";  
        jxltest.doUpdate(filePath4);  
       
       
    }
}

分享到:
评论

相关推荐

    jxl的excel读写操作

    以下是对JXL库在进行Excel读写操作时的一些关键知识点的详细解释: 1. **安装与引入** 首先,你需要将JXL库添加到你的项目类路径中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    JXL读写EXCEL示例

    在这个示例中,我们将深入探讨如何使用JXL进行Excel文件的读写操作。 首先,你需要在项目中引入JXL库。`jxl.jar`文件是JXL库的二进制文件,包含了所有必需的类和方法。将这个JAR文件添加到你的项目的类路径中,就...

    JXL读写Excel小例子

    在Java编程环境中,处理Excel文件是一项常见的任务,而JXL库提供了一个简洁的API来实现这一功能。JXL是一个开源的Java库...通过这个"JXL读写Excel小例子",你应该已经对如何使用JXL进行基本的读写操作有了初步的了解。

    JXL读写Excel源码

    5. **图表操作**:虽然JXL对图表的支持相对有限,但它可以读取和创建简单的图表,这对于简单的数据分析和可视化是足够的。 6. **性能优化**:JXL采用了流式处理,可以有效地减少内存消耗,特别是在处理大型Excel...

    JXL操作EXCEL的各个类的解析.doc

    JXL 通过提供了多种类来实现对 Excel 文件的读写操作。 首先,JXL 提供了一个抽象类 Workbook,该类相当于是一个工具类,用于生成 Excel 文件。Workbook 类提供了多种方法来生成 Excel 文件,例如 createWorkbook...

    jxl读写excel源码

    通过以上步骤,你应该能够使用jxl库在Java程序中实现基本的Excel读写操作。对于更复杂的需求,如处理图表、公式等,可以查阅jxl库的官方文档或相关教程进行深入学习。希望这个简要的指南能帮助初学者快速上手jxl库。

    jxl读写excel数据,输出图片

    综上所述,JXL库为Java开发者提供了强大而便捷的Excel操作功能,无论是读取数据、写入数据还是插入图片,都能得心应手。通过熟悉这些基本操作,你可以轻松地实现Excel文件的自动化处理,提高工作效率。在实际应用中...

    JXL读写Excel例子demo

    在"JXL读写Excel例子demo"中,我们将探讨如何利用JXL库来处理Excel数据。这个示例程序包含了一个名为"Jxl读写Excel例子demo.jxl.jar"的库文件,它是JXL库的实现,可以集成到Java项目中以处理Excel文件。 JXL库提供...

    用JXL读写excel到数据库实例

    使用jxl,读写excel数据进数据库的例子。 需要jxl.jar、poi-2.0-final-20040126.jar、mysql-connector-java-3.0.8-stable-bin.jar、jakarta-poi-1.5.1-final-20020615.jar。

    Java利用JXL读写Excel

    本篇将详细介绍如何使用JXL进行Excel的读写操作,并提供一个在MyEclipse环境中可以直接运行的示例代码。 首先,你需要在项目中引入JXL库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    JXL 下载 Excel 文档

    标签“源码”暗示了博客可能包含了实际的Java代码片段,这些代码展示了如何将JXL库集成到项目中,以实现对Excel文件的读写功能。“工具”标签则可能意味着博主还提到了其他的辅助工具或者与JXL相关的库,这些工具...

    ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容

    本文将深入探讨Java编程语言中如何使用Apache POI库和JExcelAPI(JXL)来读取、写入及操作Excel文件,同时也包括设置列宽以及处理合并或拆分的单元格内容。 首先,Apache POI是Apache软件基金会的一个开源项目,专...

    使用jxl操作Excel中的下拉列表

    jxl对下拉列表的读写操作以及相应的修改功能

    jxl操作excel实例,jxl jar包下载

    `jxl`库允许开发者使用Java语言来读写Microsoft Excel文件,无需依赖于Excel应用程序本身。本文将详细介绍如何使用`jxl`库进行Excel操作,并提供一个简单的实例。 首先,`jxl.jar`是`jxl`库的主要组件,你需要将其...

    jxl JAVA Excel解析

    Java中的JXL库是一个非常实用的工具,它允许开发者在应用程序中读取、写入和修改Excel文件。这个库特别适合那些需要处理大量数据并希望将...在Test.java文件中,你可以看到如何使用JXL库进行基本的读写操作的示例代码。

    浅谈jxl解析excel —————复制、修改excel表

    而JXL库则是一个专门用于Java平台的Excel文件读写工具,它允许开发者以编程方式来处理Excel文件,包括创建、读取、修改和保存Excel工作簿。本文将围绕“浅谈jxl解析excel ——复制、修改excel表”这一主题,深入探讨...

    java jxl Excel 读写 合并单元格 下载 等实例

    java jxl Excel 读写 合并单元格 下载 等实例

    jxl导出excel工具类

    首先,`jxl`库提供了对Excel文件的读写支持,包括工作簿(Workbook)、工作表(Worksheet)、行(Row)和单元格(Cell)等对象的创建和操作。通过这些对象,我们可以自由地构造Excel表格内容。 在描述中提到的“jxl...

    jxl操作excel文件例子

    描述中提到的“通过jxl操作excel,简单方便”,暗示了JXL库的一个关键优点——简洁易用的API,使得对Excel文件的操作变得相当直观。 JXL库支持多种Excel文件操作,包括但不限于: 1. **读取Excel文件**:你可以使用...

Global site tag (gtag.js) - Google Analytics