jxl操作Excel的一些基础操作,如读写文件,数字,日期的转换,表格的合并

本文详细介绍了使用jxl库进行Excel文件操作的方法,包括文件的读写、数字和日期的格式化、表格合并等核心功能。

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

jxl操作Excel的一些基础操作,如读写文件,数字,日期的转换,表格的合并

欢迎使用Markdown编辑器

带尺寸的图片: Alt
package dome;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import bean.Person;

import jxl.Workbook;
import jxl.write.*;
import jxl.write.Number;

//这是写的操作
public class WriteDate {
public static void write(List persons) throws Exception {
//这是在D:/Download/目录下创建一个persons.xls文件
File xlsFile = new File(“D:/Download/persons.xls”);
// 创建一个工作簿
WritableWorkbook workbook = Workbook.createWorkbook(xlsFile);
// 创建一个工作表
WritableSheet sheet = workbook.createSheet(“person”, 0);
//写入表头
sheet.addCell(new Label(0, 0, “姓名”));
sheet.addCell(new Label(1, 0, “是否结婚”));
sheet.addCell(new Label(2, 0, “年龄”));
sheet.addCell(new Label(3, 0, “生日”));
sheet.addCell(new Label(4, 0, “”));
sheet.addCell(new Label(5, 0, “身高”));

	//遍历传入集合
for (int i=1;i<persons.size();i++) {
		Person person=persons.get(i);
		//Label是单元格
		Label name=new Label(0, i, person.getName());
		sheet.addCell(name);
		
		String str="否";
		if(person.getIsMarride()){
			str="是";
		}
		Label isMarride=new Label(1, i, str);
		sheet.addCell(isMarride);
		//Number 是数字单元格,jxl.write.Number,可以和jxl.write.Label相互转换,但类型一定要正确
		Number age=new Number(2,i, person.getAge());
		sheet.addCell(age);
		
		//DateTime 和,jxl.write.Number近似,但是是日期格式
		DateTime birthDay=new DateTime( 3,i, person.getBirthDay());
		sheet.addCell(birthDay);
		sheet.addCell(new Label( 4,i, ""));
		
		Number height=new Number(5,i, person.getHeight());
		
		sheet.addCell(height);
	}
	workbook.write();
	workbook.close();
}

//下面是测试数据
public static void main(String[] args) throws Exception {
SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd”);
Date d=formatter.parse(“1987-11-23”);
Date d1=formatter.parse(“2000-12-3”);
Date d2=formatter.parse(“2013-1-3”);
Person p=new Person(“忘了”,true,18,d,178.194);
Person p1=new Person(“无聊”,false,38,d1,170.153);
Person p2=new Person(“战力”,false,37,d,168.139);
Person p3=new Person(“张武”,true,39,d2,150.181);
List persons =new ArrayList();
persons.add§;
persons.add(p1);
persons.add(p2);
persons.add(p3);
try {
write(persons);
} catch (Exception e) {
e.printStackTrace();
}
}
}

import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

//这个类是格式转换的类
public class FormatData {

public static void format() throws Exception {
	
	File xlsFile = new File("D:/Download/persons.xls");
	// 创建一个工作表
	Workbook workbook = Workbook.getWorkbook(xlsFile);
	WritableWorkbook book = Workbook.createWorkbook(xlsFile, workbook);
	WritableSheet sheet = book.getSheet("person");

	if (sheet != null) {
		//指定字体格式,大小(16),字体(黑体)0
		WritableFont font1 = new WritableFont(WritableFont.TIMES, 16,
				WritableFont.BOLD);
		WritableCellFormat format1 = new WritableCellFormat(font1);

		// 把水平对齐方式指定为居中
		format1.setAlignment(jxl.format.Alignment.CENTRE);
		// 把垂直对齐方式指定为居中
		format1.setVerticalAlignment(VerticalAlignment.CENTRE);
		
		sheet.addCell(new Label(0, 0, "姓名",format1));
		sheet.addCell(new Label(1, 0, "是否结婚",format1));
		sheet.setColumnView(1, 20);
		sheet.addCell(new Label(2, 0, "年龄",format1));
		sheet.addCell(new Label(3, 0, "生日",format1));
		
		//表格合并mergeCells(开始列数,开始行数, 结束列数, 结束行数);
		sheet.mergeCells(3, 0, 4, 0);
		sheet.addCell(new Label(5, 0, "身高",format1));
		
		// 添加带有样式的DateFormat对象 
		DateFormat dateFormat = new DateFormat("yyyy年MM月dd日");
        WritableCellFormat formatDate = new WritableCellFormat(dateFormat);
        //获得原有数据
        DateTime date=(DateTime)sheet.getCell(3, row);
		date.setCellFormat(formatDate);
        
        // 添加带有样式的Number对象   
        NumberFormat nFormat = new NumberFormat("#.##");   
        WritableCellFormat formatN = new WritableCellFormat(nFormat);
       Number hei=(Number)sheet.getCell(5, row);
	    hei.setCellFormat(formatN);

		int rows = sheet.getRows();
		for (int row = 1; row < rows; row++) {
			
			DateTime date=(DateTime)sheet.getCell(3, row);
			date.setCellFormat(formatDate);
			
			sheet.mergeCells(3, row, 4, 0);
			
	        Number hei=(Number)sheet.getCell(5, row);
	        hei.setCellFormat(formatN);
		}
		book.write();
		book.close();
		workbook.close();
	}
}

}

package dome;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import jxl.DateCell;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.Workbook;
import jxl.write.Number;
import bean.Person;
//读取文件中数据的类
public class ReadDate {

public static List<Person> read() {
	File xlsFile = new File("D:/Download/persons.xls");
	// 获得工作簿对象
	Workbook workbook = null;
	WritableWorkbook book = null;
	try {
		workbook = Workbook.getWorkbook(xlsFile);
		book = Workbook.createWorkbook(xlsFile, workbook);
	} catch (Exception e) {
		e.printStackTrace();
	}
	// 获得所有工作表
	WritableSheet sheet = book.getSheet("person");
	List<Person> persons = new ArrayList<Person>();
	if (sheet != null) {
		System.out.println(sheet);
		int rows = sheet.getRows();
		for (int row = 1; row < rows; row++) {
			Person person = new Person();
			//string类型
			String name = sheet.getCell(0, row).getContents();
			person.setName(name);
			//Boolen类型
			String isMarride = sheet.getCell(1, row).getContents();
			if (isMarride.equals("是")) {
				person.setIsMarride(true);
			} else {
				person.setIsMarride(false);
			}
			//int类型
			String age = sheet.getCell(2, row).getContents();
			person.setAge(Integer.parseInt(age));
			
			// 日期 类型的处理  
			DateCell birthDay = (DateCell) sheet.getCell(3, row);
            Date jxlDate = birthDay.getDate();   
			person.setBirthDay(jxlDate);
			//double类型
			Number height=(Number)sheet.getCell(5, row);
			person.setHeight(height.getValue());
			
			persons.add(person);
		}
	}
	workbook.close();
	return persons;
}

public static void main(String[] args) {
	List<Person> persons = read();
	System.out.println(persons.size()+"-----------------");
	// 遍历工作表
	for (Person person : persons) {
		System.out.println(person.getName());
		System.out.println(person.getIsMarride());
		System.out.println(person.getAge() + "");
		System.out.println(person.getBirthDay());
		System.out.println(person.getHeight() + "");
		System.out.println("-----------------");
	}
}

}

package bean;

import java.util.Date;
//操作的数据,一个普通的实体类
public class Person {
private String name;
private Boolean isMarride;
private int age;
private Date birthDay;
private Double height;

public Person() {
	super();
}

public Person(String name) {
	super();
	this.name = name;
}

public Person(String name, int age) {
	super();
	this.name = name;
	this.age = age;
}

public Person(String name, int age, Date birthDay) {
	super();
	this.name = name;
	this.age = age;
	this.birthDay = birthDay;
}

public Person(String name, Boolean isMarride, int age, Date birthDay,
		Double height) {
	super();
	this.name = name;
	this.isMarride = isMarride;
	this.age = age;
	this.birthDay = birthDay;
	this.height = height;
}

public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public Boolean getIsMarride() {
	return isMarride;
}
public void setIsMarride(Boolean isMarride) {
	this.isMarride = isMarride;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public Date getBirthDay() {
	return birthDay;
}
public void setBirthDay(Date birthDay) {
	this.birthDay = birthDay;
}
public Double getHeight() {
	return height;
}
public void setHeight(Double height) {
	this.height = height;
}

}
居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值