java利用JXL操作excel

通过JXL操作Excel JXL是韩国人所著,目前停止更新,只支持xls格式,即2007之前的版本


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;

import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.DateFormat;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.NumberFormat;
import jxl.write.WritableCellFeatures;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableHyperlink;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**
 * 1.通过Apache POI 操作Excel Apache POI是用Java编写的免费开源的跨平台的 Java API,Apache
 * POI提供API给Java对Microsoft Office格式档案读和写的功能 常用的包: HSSF - 提供读写Microsoft Excel
 * XLS格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。 HWPF -
 * 提供读写Microsoft Word DOC格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式档案的功能。 HDGF -
 * 提供读Microsoft Visio格式档案的功能。 HPBF - 提供读Microsoft Publisher格式档案的功能。 HSMF -
 * 提供读Microsoft Outlook格式档案的功能。 需要引用poi.jar包和poi-ooxml.jar包
 * 
 * 2.通过JXL操作Excel JXL是韩国人所著,目前停止更新,只支持xls格式,即2007之前的版本
 * 
 * @author LYJ
 *
 */
public class ExcelOperate {

	public static void main(String[] args) {
		writeExcelByJxl("C:\\Users\\LYJ\\Desktop\\tmp\\writeTest.xls");
		readExcelByJxl("C:\\Users\\LYJ\\Desktop\\tmp\\writeTest.xls");

	}

	public static void writeExcelByJxl(String file) {
		WritableWorkbook workbook = null;
		WritableSheet sheet = null;
		try {
			// 创建一个可写的工作簿
			workbook = Workbook.createWorkbook(new File(file));
			// 创建一个sheet页,名称为"sheet1"
			sheet = workbook.createSheet("sheet1", 0);

			// 定义单元格格式
			WritableCellFormat format1 = new WritableCellFormat();
			format1.setAlignment(Alignment.CENTRE);// 水平对齐
			format1.setVerticalAlignment(VerticalAlignment.CENTRE);// 垂直对齐
			WritableFont font = new WritableFont(WritableFont.TAHOMA, 18, WritableFont.BOLD, false);
			format1.setBorder(Border.ALL, BorderLineStyle.THIN);// 边框线 所有边框 细线
			format1.setBackground(Colour.GRAY_25); // 设置单元格的背景颜色
			format1.setWrap(false);// 文字是否换行
			format1.setShrinkToFit(false);// 自适应列宽
			format1.setFont(font);

			// 创建一个单元格,参数为:列(第一列从0开始),行(第一行从0开始),内容
			Label lable = new Label(0, 0, "姓名");// 第1行,第1列
			lable.setCellFormat(format1);
			sheet.addCell(lable);

			lable = new Label(1, 0, "性别");// 第1行,第2列
			sheet.addCell(lable);

			lable = new Label(2, 0, "年龄");// 第1行,第3列
			sheet.addCell(lable);

			lable = new Label(3, 0, "生日");// 第1行,第4列
			WritableCellFeatures cellFeatures = new WritableCellFeatures();
			cellFeatures.setComment("请输入日期格式");// 设置审阅备注信息
			lable.setCellFeatures(cellFeatures);
			sheet.addCell(lable);

			lable = new Label(4, 0, "体重");// 第1行,第5列
			sheet.addCell(lable);

			lable = new Label(5, 0, "地址");// 第1行,第6列
			sheet.addCell(lable);

			// 设置第2行内容
			lable = new Label(0, 1, "张三");// 第2行,第1列
			sheet.addCell(lable);

			lable = new Label(1, 1, "男");// 第2行,第2列
			sheet.addCell(lable);

			// 定义一个数字格式
			NumberFormat numberFormat = new NumberFormat("#");
			WritableCellFormat cellFormat = new WritableCellFormat(numberFormat);
			// 写入一个格式化的数字
			jxl.write.Number numberLable = new jxl.write.Number(2, 1, 20, cellFormat);// 第2行,第3列
			sheet.addCell(numberLable);

			DateFormat df = new DateFormat("yyyy/MM/dd");
			jxl.write.DateTime dateLable = new jxl.write.DateTime(3, 1, new Date());// 第2行,第4列
			cellFormat = new WritableCellFormat(df);
			dateLable.setCellFormat(cellFormat);
			sheet.addCell(dateLable);

			// 定义一个数字格式
			numberFormat = new NumberFormat("#.##");
			cellFormat = new WritableCellFormat(numberFormat);
			// 写入一个格式化的数字
			numberLable = new jxl.write.Number(4, 1, 65.56, cellFormat);// 第2行,第5列
			sheet.addCell(numberLable);

			lable = new Label(5, 1, "湖北省武汉市洪山区未来科技城C2栋");// 第2行,第6列
			// 定义单元格格式
			WritableCellFormat format2 = new WritableCellFormat();
			// 定义单元格样式:字体 下划线 斜体 粗体 颜色
			WritableFont font2 = new WritableFont(WritableFont.ARIAL, 12, WritableFont.NO_BOLD, false,
					UnderlineStyle.NO_UNDERLINE, Colour.RED);
			format2.setWrap(true);// 文字是否换行
			format2.setShrinkToFit(false);// 自适应列宽
			format2.setFont(font2);
			lable.setCellFormat(format2);
			sheet.addCell(lable);

			// 设置第3行内容
			lable = new Label(0, 2, "李四");// 第2行,第1列
			sheet.addCell(lable);

			lable = new Label(1, 2, "男");// 第2行,第2列
			sheet.addCell(lable);

			// 定义一个数字格式
			numberFormat = new NumberFormat("#");
			cellFormat = new WritableCellFormat(numberFormat);
			// 写入一个格式化的数字
			numberLable = new jxl.write.Number(2, 2, 23, cellFormat);// 第2行,第3列
			sheet.addCell(numberLable);

			df = new DateFormat("yyyy/MM/dd");
			dateLable = new jxl.write.DateTime(3, 2, new Date());// 第2行,第4列
			cellFormat = new WritableCellFormat(df);
			dateLable.setCellFormat(cellFormat);
			sheet.addCell(dateLable);

			// 定义一个数字格式
			numberFormat = new NumberFormat("#.##");
			cellFormat = new WritableCellFormat(numberFormat);
			// 写入一个格式化的数字
			numberLable = new jxl.write.Number(4, 2, 70.5, cellFormat);// 第2行,第5列
			sheet.addCell(numberLable);

			lable = new Label(5, 2, "湖北省武汉市洪山区未来科技城C2栋");// 第2行,第6列
			// 定义单元格格式
			format2 = new WritableCellFormat();
			// 定义单元格样式:字体 下划线 斜体 粗体 颜色
			font2 = new WritableFont(WritableFont.ARIAL, 12, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
					Colour.RED);
			format2.setWrap(true);// 文字是否换行
			format2.setShrinkToFit(false);// 自适应列宽
			format2.setFont(font2);
			lable.setCellFormat(format2);
			sheet.addCell(lable);

			// 公式
			Formula f1 = new Formula(2, 4, "SUM(C2:C3)");
			sheet.addCell(f1);
			Formula f2 = new Formula(4, 4, "AVERAGE(E2:E3)");
			sheet.addCell(f2);

			// 图片单元格
			File file2 = new File("C:\\Users\\LYJ\\Desktop\\tmp\\梦之桃花源.png");
			WritableImage image = new WritableImage(1, 5, 3, 10, file2);// 图片从2列到第4列,占第6行第10行
			sheet.addImage(image);

			// 增加超链接单元格
			WritableHyperlink link = new WritableHyperlink(6, 2, new URL("http://www.baidu.com"));
			sheet.addHyperlink(link);

			// 设置行高
			sheet.getSettings().setDefaultRowHeight(350); // 设置所有行默认行高
			sheet.setRowView(0, 700);// 第1行 高度
			sheet.setRowView(1, 400);// 第2行 高度

			// 设置列宽
			sheet.getSettings().setDefaultColumnWidth(20);
			sheet.setColumnView(0, 10);// 第1列 宽度

			// 合并单元格(列,行,列,行)
			sheet.mergeCells(0, 5, 3, 5); // 第1列,第6行与第4列,第6行合并

			// 从内存中写入文件中
			workbook.write();
			// 关闭资源,释放内存
			workbook.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (RowsExceededException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		}
	}

	public static void readExcelByJxl(String file) {
		try {
			InputStream is = new FileInputStream(file);
			Workbook workBook = Workbook.getWorkbook(is);
			Sheet sheet = workBook.getSheet(0);// 获取第一张Sheet表

			// 获取单元格
			Cell cell = sheet.getCell(0, 0);
			// 获取单元格内容
			String value = cell.getContents();
			System.out.println("value=" + value);

			int rowCount = sheet.getRows();// 得到总行数
			int columnCount = sheet.getColumns();// 得到总列数
			// 循环获取excel内容
			for (int i = 0; i < rowCount; i++) {
				for (int j = 0; j < columnCount; j++) {
					cell = sheet.getCell(j, i);
					value = cell.getContents();
					if (CellType.DATE == cell.getType()) {
						System.out.println("第" + (i + 1) + "行,第" + (j + 1) + "数据类型=" + cell.getType());
					}
					System.out.println("第" + (i + 1) + "行,第" + (j + 1) + "列的值=" + value);
				}
			}

			is.close();
			workBook.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

写入excel结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/872614.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c# checkbox的text文字放到右边

checkbox的text文字放到右边 实现方法如下图 特此记录 anlog 2024年9月2日

Tensorflow实现深度学习8:猫狗识别

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 导入数据 import matplotlib.pyplot as plt import tensorflow as tf # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] Fals…

带AI功能朵米客服系统3.5无限制开心版+搭建文档

带AI功能朵米客服系统3.5无限制开心版搭建文档&#xff0c;朵米客服系统是一款全功能的客户服务解决方案&#xff0c;提供多渠道支持&#xff08;如在线聊天、邮件、电话等&#xff09;&#xff0c;帮助企业建立与客户的实时互动。该系统具有智能分流功能&#xff0c;可以快速将…

万象奥科参展“2024 STM32全国巡回研讨会”—深圳站、广州站

9月3日-9月5日&#xff0c;万象奥科参展“2024 STM32全国巡回研讨会”— 深圳站、广州站。此次STM32研讨会将会走进全国11个城市&#xff0c;展示STM32在智能工业、无线连接、边缘人工智能、安全、图形用户界面等领域的产品解决方案及多样化应用实例&#xff0c;深入解读最新的…

【RabbitMQ之一:windows环境下安装RabbitMQ】

目录 一、下载并安装Erlang1、下载Erlang2、安装Erlang3、配置环境变量4、验证erlang是否安装成功 二、下载并安装RabbitMQ1、下载RabbitMQ2、安装RabbitMQ3、配置环境变量4、验证RabbitMQ是否安装成功5、启动RabbitMQ服务&#xff08;安装后服务默认自启动&#xff09; 三、安…

VR虚拟展厅的应用场景有哪些?

虚拟展厅作为一种利用虚拟现实技术构建的三维展示空间&#xff0c;其应用场景广泛且多样。视创云展为企业虚拟展厅搭建提供技术支持。以下是一些主要的应用场景&#xff1a; 1. 博物馆和艺术展览 文物保护与展示&#xff1a; 在博物馆中&#xff0c;为了保护珍贵的文物和艺术…

【node.js】基础之修改文件

node.js 基础(一) node.js是什么&#xff1f; 上面这句话的意思就是&#xff1a;Node.js 是一个开源的&#xff0c;跨平台的javascript运行环境。通俗的说就是一个应用程序或者说是一个软件&#xff0c;可以运行javascript。 Node.js的作用&#xff1a; 开发服务器应用。 将数…

nvidia-cuda-tensorrt-cudnn下载网站

tensorrt:https://developer.nvidia.com/tensorrt/download cudnn:https://developer.nvidia.com/rdp/cudnn-archive cuda:https://developer.nvidia.com/cuda-toolkit-archive

Mybatis---代理设计模式(超详细)

Mybatis—代理设计模式 文章目录 Mybatis---代理设计模式一、什么是代理设计模式二、静态代理1、定义2、结构3、示例 三、动态代理1、定义2、newProxyInstance &#xff08;&#xff09;方法3、示例 四、CGLIB代理1、引入2、定义3、工作原理4、示例 一、什么是代理设计模式 首…

AI基础 L1 Introduction to Artificial Intelligence

什么是AI Chinese Room Thought Experiment 关于“强人工智能”的观点&#xff0c;即认为只要一个系统在行为上表现得像有意识&#xff0c;那么它就真的具有理解能力。 实验内容如下&#xff1a; 假设有一个不懂中文的英语说话者被关在一个房间里。房间里有一本用英文写的中…

鸿蒙开发基础知识-页面布局【第四篇】

1.类型转换 2.交互点击事件 3.状态管理 4.forEch渲染和右上角图标 测试案例 Stack 层叠布局一个生肖卡 5. 动画展示图片 6. Swiper 轮播组件的基本使用 图片等比显示 aspectRatio&#xff08;&#xff09;

TikTok直播为什么要用独立IP

TikTok直播作为一种受欢迎的社交媒体形式&#xff0c;吸引了越来越多的用户和内容创作者。在进行TikTok直播时&#xff0c;选择使用独立IP地址是一种被广泛推荐的做法。本文将探讨为什么在TikTok直播中更推荐使用独立IP&#xff0c;并解释其优势和应用。 独立IP是指一个唯一的互…

sheng的学习笔记-AI-半监督聚类

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 半监督学习&#xff1a;sheng的学习笔记-AI-半监督学习-CSDN博客 聚类&#xff1a;sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 均值算法&#xff1a;sheng的学习笔记-AI-K均值算法_k均值算法怎么算迭代两次后的最大…

Linux-(系统启动、用户管理)

目录 前言 关机&重启命令 基本介绍 注意细节 用户登录和注销 注意&#xff1a; 用户管理 基本介绍 添加用户 指定/修改密码 删除用户 查询用户信息 切换用户 查看当前用户登录用户 用户组 新增组 删除组 查看所有组 修改用户所属组 创建用户时指定用户…

超声波微型气象仪

超声波微型气象仪是一种便携式的气象观测仪器&#xff0c;可以测量温度、湿度、气压和风速等气象参数。其使用方法如下&#xff1a; 打开仪器电源&#xff0c;并确保仪器已经预热完成。将仪器放置在待测环境中&#xff0c;确保避免直接阳光照射和强风的影响。确定仪器与待测气…

110001安庆巡检_工艺巡检

安庆巡检_工艺巡检 一. 工艺配置二. 点检计划三. 点检任务四. 复检任务1. 复检列表1.1 页面展示 2. 复检任务下发2.1 操作说明2.2 业务说明2.3 表关联说明ps_recheck_task工艺工序参数_复检详情表 3. 复检详情2.1 获取参数点检详情2.2 获取复检详情列表 4. app端复检任务提交4.…

HTML的块级元素与行内元素

在HTML中&#xff0c;元素可以分为两大类&#xff1a;块级元素&#xff08;block-level elements&#xff09;和行内元素&#xff08;inline elements&#xff09;。这两种类型的元素在网页布局和呈现中扮演着不同的角色。 块级元素&#xff08;Block-level Elements&#xff…

免费申请aws一年免费服务器使用教程

由于近期要测试一个公网项目&#xff0c;对比之下&#xff0c;选择了aws服务器&#xff0c;免费使用一年。 准备&#xff1a;一个visa信用卡即可&#xff0c;需要一个外网邮箱&#xff08;我这边使用的hotmail&#xff09; 注册的步骤不再赘述&#xff0c;切记几个点&#xff0…

智 能 合 约

1. 智能合约的历史 智能合约最初是由 Nick Szabo 在 20 世纪 90 年代后期的一篇名为 Formalizing and Securing Relationships on Public Networks(《公共网络上关系的格式化和安全保护》&#xff09;的文章中提出的&#xff0c;但是 20 年之后&#xff0c;比特币的发明和区块链…

Qt QGraphicsView实现图片放缩、鼠标拖动移动、鼠标点位置放大缩小_图片查看

QtQGraphicsView实现图片放缩、鼠标拖动移动、鼠标点位置放大缩小 头文件&#xff1a; #ifndef TIMGWIDGET_H #define TIMGWIDGET_H#include <QGraphicsItem> #include <QMainWindow> #include <QObject> #include <QWidget>// class TImgWidget : pu…