`
reallyafei
  • 浏览: 98808 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java读写excel

    博客分类:
  • Java
阅读更多

java应用jxl API读写excel:

package tf.excel;

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

import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.write.DateFormats;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import common.Logger;

public class JxlTest {

	private static Logger log = Logger.getLogger(JxlTest.class);

	private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

	private File file;

	public JxlTest(String fileName) {
		this.file = new File(fileName);
	}

	public JxlTest(File file) {
		this.file = file;
	}

	public static void main(String[] args) {
		JxlTest jxl = new JxlTest("users.xls");
		jxl.writeExcel();

		List<User> list = jxl.readExcel();
		for (User u : list) {
			log.info(u.yhm + "--" + u.xm + "--" + u.age + "--"
					+ df.format(u.sr));
		}
	}

	public void writeExcel() {
		WritableWorkbook ww;
		try {
			ww = Workbook.createWorkbook(file);
			WritableSheet ws = ww.createSheet("用户信息", 0);

			Operate.addLabelToSheet(ws, 0, 0, 3, 0, "用户信息", Style
					.getHeaderStyle());
			Operate.addLabelToSheet(ws, 0, 1, "用户名", Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 1, 1, "姓名", Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 2, 1, "年龄", Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 3, 1, "生日", Style.getTitleStyle());

			Operate.addLabelToSheet(ws, 0, 2, "tt", Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 1, 2, "糖糖", Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 2, 2, 25, Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 3, 2, df.parse("1984-08-12"), Style
					.getDateStyle());
			Operate.addLabelToSheet(ws, 0, 3, "ff", Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 1, 3, "飞飞", Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 2, 3, 24, Style.getTitleStyle());
			Operate.addLabelToSheet(ws, 3, 3, df.parse("1985-11-25"), Style
					.getDateStyle());

			for (int i = 0; i < 4; i++) {
				ws.setColumnView(i, 16);
			}
			ws.setRowView(0, 20);
			ww.write();
			ww.close();
			log.info("写入excel成功!");
		} catch (Exception e) {
			log.info("写入excel失败!");
			e.printStackTrace();
		}

	}

	public List<User> readExcel() {
		List<User> list = new ArrayList<User>();
		Workbook wb;
		try {
			wb = Workbook.getWorkbook(file);

			Sheet sheet = wb.getSheet(0);
			int row = sheet.getRows();
			int col = sheet.getColumns();
			for (int i = 2; i < row; i++) {
				User user = new User();
				for (int j = 0; j < col; j++) {
					Cell cell = sheet.getCell(j, i);

					if (cell.getType() == CellType.LABEL) {
						LabelCell lc = (LabelCell) cell;
						switch (j) {
						case 0:
							user.setYhm(lc.getContents());
						case 1:
							user.setXm(lc.getContents());
						}
					}

					if (cell.getType() == CellType.NUMBER) {
						NumberCell nc = (NumberCell) cell;
						user.setAge((int) nc.getValue());
					}

					if (cell.getType() == CellType.DATE) {
						DateCell dc = (DateCell) cell;
						user.setSr(dc.getDate());
					}
				}
				list.add(user);
			}
			log.info("读取excel成功!");
		} catch (Exception e) {
			log.info("读取excel失敗!");
			e.printStackTrace();
		}
		return list;

	}

	static class Style {
		/**
		 * 页头样式
		 */
		public static WritableCellFormat getHeaderStyle() throws Exception {
			WritableFont font = new WritableFont(WritableFont.TIMES, 14); // 设置14号字体
			font.setColour(Colour.BLUE); // 设置字体颜色
			font.setBoldStyle(WritableFont.BOLD); // 设置粗体字
			WritableCellFormat format = new WritableCellFormat(font); // 设置单元格样式
			format.setBackground(Colour.LIGHT_GREEN); // 设置背景颜色
			format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);//设置边界样式
			format.setAlignment(Alignment.CENTRE); // 设置水平位置
			format.setVerticalAlignment(VerticalAlignment.CENTRE); // 设置竖直位置
			return format;
		}

		/**
		 * 标题样式
		 */
		public static WritableCellFormat getTitleStyle() throws Exception {
			WritableFont font = new WritableFont(WritableFont.TIMES, 14);
			font.setColour(Colour.GREEN);
			WritableCellFormat format = new WritableCellFormat(font);
			format.setBackground(Colour.VERY_LIGHT_YELLOW);
			format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
			format.setAlignment(Alignment.CENTRE);
			format.setVerticalAlignment(VerticalAlignment.CENTRE);
			return format;
		}

		/**
		 * 内容样式
		 */
		public static WritableCellFormat getContentStyle() throws Exception {
			WritableFont font = new WritableFont(WritableFont.TIMES, 14);
			font.setColour(Colour.BLUE);
			WritableCellFormat format = new WritableCellFormat(font);
			format.setBackground(Colour.VERY_LIGHT_YELLOW);
			format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
			format.setAlignment(Alignment.CENTRE);
			format.setVerticalAlignment(VerticalAlignment.CENTRE);
			return format;
		}

		/**
		 * 普通样式
		 */
		public static WritableCellFormat getNormalStyle() throws Exception {
			WritableFont font = new WritableFont(WritableFont.TIMES, 14);
			font.setColour(Colour.BLUE);
			WritableCellFormat format = new WritableCellFormat(
					DateFormats.FORMAT12);
			format.setBackground(Colour.VERY_LIGHT_YELLOW);
			format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
			format.setAlignment(Alignment.CENTRE);
			format.setVerticalAlignment(VerticalAlignment.CENTRE);
			return format;
		}

		/**
		 * 日期样式
		 */
		public static WritableCellFormat getDateStyle() throws Exception {
			WritableFont font = new WritableFont(WritableFont.TIMES, 14);
			font.setColour(Colour.BLUE);
			WritableCellFormat format = new WritableCellFormat(
					DateFormats.FORMAT1);
			format.setBackground(Colour.VERY_LIGHT_YELLOW);
			format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
			format.setAlignment(Alignment.CENTRE);
			format.setVerticalAlignment(VerticalAlignment.CENTRE);
			return format;
		}
	}

	static class Operate {
		/**
		 * 写入文本
		 */
		public static void addLabelToSheet(WritableSheet ws, int col, int row,
				String cont, CellFormat format) throws Exception {
			Label label = new Label(col, row, cont, format);
			ws.addCell(label);
		}

		/**
		 * 写入文本(合并后的单元格)
		 */
		public static void addLabelToSheet(WritableSheet ws, int firstCol,
				int firstRow, int lastCol, int lastRow, String cont,
				CellFormat format) throws Exception {
			ws.mergeCells(firstCol, firstRow, lastCol, lastRow);
			addLabelToSheet(ws, firstCol, firstRow, cont, format);
		}

		/**
		 * 写入数字
		 */
		public static void addLabelToSheet(WritableSheet ws, int col, int row,
				double num, CellFormat format) throws Exception {
			jxl.write.Number number = new jxl.write.Number(col, row, num,
					format);
			ws.addCell(number);
		}

		/**
		 * 写入日期
		 */
		public static void addLabelToSheet(WritableSheet ws, int col, int row,
				Date date, CellFormat format) throws Exception {

			DateTime dt = new DateTime(col, row, date, format, DateTime.GMT);
			ws.addCell(dt);
		}
	}

	static class User {
		private String yhm;
		private String xm;
		private int age;
		private Date sr;

		public String getYhm() {
			return yhm;
		}

		public void setYhm(String yhm) {
			this.yhm = yhm;
		}

		public String getXm() {
			return xm;
		}

		public void setXm(String xm) {
			this.xm = xm;
		}

		public int getAge() {
			return age;
		}

		public void setAge(int age) {
			this.age = age;
		}

		public Date getSr() {
			return sr;
		}

		public void setSr(Date sr) {
			this.sr = sr;
		}
	}
}

 

  • jxl.jar (708.2 KB)
  • 下载次数: 74
1
0
分享到:
评论

相关推荐

    完美解决java读取excel内存溢出问题.rar

    总结来说,解决Java读取Excel内存溢出问题,关键在于合理利用资源、优化代码逻辑以及选择适合的API,如Apache POI的SXSSF。通过这些方法,我们可以在不显著增加系统资源负担的情况下,高效地处理大Excel文件。

    Java读取Excel内容

    Java读取Excel内容 v Java读取Excel内容 Java读取Excel内容

    JAVA读取Excel,建库建表,并生成java实体

    总结,Java读取Excel并进行数据库建库建表及生成Java实体的过程涉及了Apache POI库的使用、数据库操作和源代码生成。理解这些步骤可以帮助你有效地处理类似的任务,提高开发效率。在实际应用中,你还需要考虑错误...

    java读取excel数据导入数据库源码

    java读取excel数据导入数据库源码 java读取excel数据导入数据库源码

    Java读取Excel表格中的日期

    ### Java读取Excel表格中的日期 #### 背景与问题描述 在处理Excel文件时,经常遇到的一个问题是如何正确地识别并处理日期格式的数据。这是因为Excel中的日期格式较为复杂,有时甚至会出现不同版本的Excel文件中...

    java读取excel文件生成矩阵

    在Java编程中,读取Excel文件并生成矩阵是一项常见的任务,尤其在数据分析、报表处理或者数据导入导出的场景下。Excel文件通常用于存储结构化的表格数据,而矩阵则是一种有效的数据表示方式,便于计算和分析。下面...

    java读取excel

    "Java 读取 Excel 文件" Java 读取 Excel 文件是 Java 语言中常见的操作之一,通过使用 Apache POI 库,可以轻松地读取 Excel 文件中的数据。本文将通过 ReadExcelUtil 工具类,详细介绍如何读取 Excel 文件。 ...

    java读写excel包括utf8转码为可识别汉字gbk

    java读写excel包括utf8转码为可识别汉字gbk,jxl方式读取excel,生成一个新的excel

    java读取excel之xlsl超大文件

    标题"java读取excel之xlsl超大文件"所涉及的核心知识点是优化大量数据的读取策略。在Java中,可以使用Apache POI的SXSSF API(Streaming Usermodel API)来实现这种优化。与常规的XSSF API不同,SXSSF允许我们以流的...

    java读取excel所有页的数据

    在Java编程中,读取Excel数据是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件通常包含多个工作表(页),每个工作表都可能存储了大量的数据。本篇将详细介绍如何使用Java读取Excel所有页的数据,以及...

    JAVA读取 excelJAVA读取 excel

    在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件,通常是.XLS或.XLSX格式,是Microsoft Office Excel创建的,但Java程序员可以利用一些库来处理这些文件,即使没有...

    Java读取excel

    Java读取excel

    java 读取Excel文件中的内容

    在Java编程中,读取Excel文件的内容是一项常见的任务,尤其在数据处理、报表生成或数据分析等领域。Excel文件通常包含表格数据,而Java提供多种库来处理这类任务,比如Apache POI、JExcelApi和OpenCSV等。本篇将重点...

    java读取excel文件

    Java 读取 Excel 文件 Java 读取 Excel 文件是指使用 Java 语言从 Excel 文件中读取数据,并对其进行处理的过程。下面将详细介绍 Java 读取 Excel 文件的过程和相关知识点。 Java 读取 Excel 文件的步骤 1. 导入...

    java读取excel数据!

    在Java编程环境中,读取Excel数据是一项常见的任务,特别是在数据处理、数据分析或系统集成的场景中。本示例中,我们关注的是如何使用Java来读取Excel表格中的数据,并将其保存,这通常涉及到Apache POI库的应用。...

    java读写Excel,POI.JAR,Word内容读取

    java读写Excel,POI.JAR,Word内容读取

    非常简洁的java读写EXCEL源代码

    标题“非常简洁的java读写EXCEL源代码”以及描述中提到的“非常简单,还赠送个JXL的包”都暗示了我们将讨论如何使用JXL库进行Excel操作。 首先,让我们来了解JXL库。JXL是一个开源的Java库,用于读写Microsoft ...

    java读取excel文件jar包20181223

    Java读取Excel文件是开发过程中常见的任务,尤其是在处理数据导入导出、数据分析或者报表生成时。这个名为"java读取excel文件jar包20181223"的资源可能包含了一些帮助Java开发者实现这一功能的库。下面将详细讨论...

    java读取Excel中多个sheet生成xml文件

    java读取Excel表中的内容,可以读取多个sheet,生成自定义格式的xml文件

    Java读取Excel支持2003和2007

    在Java编程中,读取Excel文件是常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有两种主要版本,即2003年的.xls(基于BIFF8格式)和2007年及以后的.xlsx(基于OpenXML标准)。本教程将详细讲解如何使用...

Global site tag (gtag.js) - Google Analytics