jxl读写excel

本文介绍如何使用Java的jxl库进行Excel文件的读写操作。包括读取Excel中指定sheet的内容,并将其转换为字符串列表;同时提供了一个写入Excel的例子,展示了如何创建新的Excel文件并填充数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在搞报表类的东西,天天接触的最多的就是word或者excel,以前也常做,为了避免以后忘掉,因此还是记录下来最好。使用jxl这个组件来操作excel非常的方便,将它的一些基本操作写下来,希望对同样搞这方面的朋友有帮助!

jxl读取excel代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ExcelImporter
{

	/**
	 * @Function     //函数、方法名称
	 * @Description  //测试excell表格
	 * @Input        //输入参数的说明
	 * @Output       //输出参数的说明
	 * @Return       //函数返回值的说明
	 * @Others       //其它说明
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		List<String> list = new ArrayList<String>();
		String filePath = "C:/sinye.xls";
		InputStream fs = null;
	                Workbook workBook = null;
	    
	    try {
	        // 加载excel文件
	        fs = new FileInputStream(filePath);
	        // 得到 workbook
	            workBook = Workbook.getWorkbook(fs);
	       } catch (FileNotFoundException e) {
	    	   e.printStackTrace();
	       } catch (BiffException e) {
	    	   e.printStackTrace();
	       } catch (IOException e) {
	    	   e.printStackTrace();
	       }
 
	          // 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。
	       // getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。就是多次循环的事。
	       Sheet sheet = workBook.getSheet(0);//这里只取得第一个sheet的值,默认从0开始
	       System.out.println(sheet.getColumns());//查看sheet的列
	       System.out.println(sheet.getRows());//查看sheet的行
	       Cell cell = null;//就是单个单元格
	       // 开始循环,取得 cell 里的内容,这里都是按String来取的 为了省事,具体你自己可以按实际类型来取。或者都按
	       // String来取。然后根据你需要强制转换一下。
	       for (int j = 0; j < sheet.getColumns(); j++) {
	    	   	StringBuffer sb =  new StringBuffer();
		        for (int i = 0; i < sheet.getRows(); i++) {
		        	cell = sheet.getCell(j, i);
		        	sb.append(cell.getContents());
		        	sb.append(",");//将单元格的每行内容用逗号隔开
		        }
		        list.add(sb.toString());//将每行的字符串用一个String类型的集合保存。
	       }
	       workBook.close();//记得关闭
	       
	      //迭代集合查看每行的数据
	      for(String ss:list){
	    	  System.out.println(ss);
	      }
	}

}

 接下来,就是写excel了,见代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class JxlWriteExcel {
    
    /**
     * @param datas 封装着Object[]的列表, 一般是String内容.
     * @param title 每个sheet里的标题.
     */
    public void writeExcel(OutputStream out, List list, String[] title) {
        if(list == null) {
            throw new IllegalArgumentException("要写入excel的数据不能为空!");
        }
        try {
            WritableWorkbook workbook = Workbook.createWorkbook(out);
            WritableSheet ws = workbook.createSheet("sheet 1", 0);//创建sheet
            int rowNum = 0;    //要写的行,jxl操作excel时,第一行是从0开始,以此类推
            if(title != null) {
                putRow(ws, 0, title);//压入标题
                rowNum = 1;
            }
            for(int i=0; i<list.size(); i++, rowNum++) {//写sheet
                Object[] cells = (Object[]) list.get(i);
                putRow(ws, rowNum, cells);    //压一行到sheet
            }
            workbook.write();
            workbook.close();    //一定要关闭, 否则没有保存Excel
        } catch (RowsExceededException e) {
            System.out.println("jxl write RowsExceededException: "+e.getMessage());
        } catch (WriteException e) {
            System.out.println("jxl write WriteException: "+e.getMessage());
        } catch (IOException e) {
            System.out.println("jxl write file i/o exception!, cause by: "+e.getMessage());
        }
    }

    private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException {
        for(int j=0; j<cells.length; j++) {//写一行
            Label cell = new Label(j, rowNum, ""+cells[j]);
            ws.addCell(cell);
        }
    }
    
}

 调用写excel的测试代码

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

public class Test1 {
            public static void main(String[] args) {
	// TODO Auto-generated method stub
	List list = new ArrayList();
	//组装写入excel的数据
        for(int i=0;i<10;i++){
        	String[] data = {"开心"+i,"2"+i};
        	list.add(data);
        }
        try {
            OutputStream out = new FileOutputStream(new File("c:\\sinye.xls"));
            JxlWriteExcel jxlExcelWriter = new JxlWriteExcel();
            jxlExcelWriter.writeExcel(out, list, new String[] {"姓名", "年龄"});
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 记得在你的编译环境下放置jxl.jar文件啊!

 

内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则和命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式和控制符号在多条物理通道上的一致性和正确性。文档还涵盖了链路性能监控和错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计和实现支持多种数据速率和编码方式的InfiniBand设备;② 开发链路初始化和训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控和错误检测,提高系统的可靠性和稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考和技术交流使用。文档内容详尽,对于理解和实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解和应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值