`
ynztpwl
  • 浏览: 59605 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java对Excel的读写操作

 
阅读更多

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.CellType;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class ExcelOpt {
/**
* 生成一个Excel文件 jxl
*
* @param fileName
* 要生成的Excel文件名
* @jxl.jar 版本:2.6
*/
public static void writeExcel(String fileName) {
WritableWorkbook wwb = null;
try {
// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));

} catch (IOException e) {
e.printStackTrace();
}
if (wwb != null) {
// 创建一个可写入的工作表
// Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("工作表名称", 0);

// 下面开始添加单元格
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第" + (i + 1) + "行,第"
+ (j + 1) + "列");
try {
// 将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}

}
}

try {
// 从内存中写入文件中
wwb.write();
// 关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}

/**
* 生成一个Excel文件POI
*
* @param inputFile
* 输入模板文件路径
* @param outputFile
* 输入文件存放于服务器路径
* @param dataList
* 待导出数据
* @throws Exception
* @roseuid:
*/

public static void exportExcelFile(String inputFile, String outputFile,
List dataList) throws Exception {
// 用模板文件构造poi
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
// 创建模板工作表
HSSFWorkbook templatewb = new HSSFWorkbook(fs);
// 直接取模板第一个sheet对象
HSSFSheet templateSheet = templatewb.getSheetAt(1);
// 得到模板的第一个sheet的第一行对象 为了得到模板样式
HSSFRow templateRow = templateSheet.getRow(0);

// HSSFSheet timplateSheet = templatewb.getSheetAt(1);
// 取得Excel文件的总列数
int columns = templateSheet.getRow((short) 0)
.getPhysicalNumberOfCells();
// Debug.println("columns is : " + columns); //=========================
// 创建样式数组
HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];

// 一次性创建所有列的样式放在数组里
for (int s = 0; s < columns; s++) {
// 得到数组实例
styleArray[s] = templatewb.createCellStyle();
}
// 循环对每一个单元格进行赋值
// 定位行
for (int rowId = 1; rowId < dataList.size(); rowId++) {
// 依次取第rowId行数据 每一个数据是valueList
List valueList = (List) dataList.get(rowId - 1);
// 定位列
for (int columnId = 0; columnId < columns; columnId++) {
// 依次取出对应与colunmId列的值
// 每一个单元格的值
String dataValue = (String) valueList.get(columnId);
// 取出colunmId列的的style
// 模板每一列的样式
HSSFCellStyle style = styleArray[columnId];
// 取模板第colunmId列的单元格对象
// 模板单元格对象
HSSFCell templateCell = templateRow.getCell((short) columnId);
// 创建一个新的rowId行 行对象
// 新建的行对象
HSSFRow hssfRow = templateSheet.createRow(rowId);
// 创建新的rowId行 columnId列 单元格对象
// 新建的单元格对象
HSSFCell cell = hssfRow.createCell((short) columnId);
// 如果对应的模板单元格 样式为非锁定
if (templateCell.getCellStyle().getLocked() == false) {
// 设置此列style为非锁定
style.setLocked(false);
// 设置到新的单元格上
cell.setCellStyle(style);
}
// 否则样式为锁定
else {
// 设置此列style为锁定
style.setLocked(true);
// 设置到新单元格上
cell.setCellStyle(style);
}
// 设置编码
// cell.setEncoding(HSSFCell.ENCODING_UTF_16);
// Debug.println("dataValue : " + dataValue);
// 设置值 统一为String
cell.setCellValue(dataValue);
}
}
// 设置输入流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 将模板的内容写到输出文件上
templatewb.write(fOut);
fOut.flush();

// 操作结束,关闭文件
fOut.close();

}

/**
* 导出数据为XLS格式
*
* @param fos
* 生成Excel文件Path
* @param bo
* 要导入的数据
*/
public static void writeExcelBo(String fos, java.util.List ve) {
jxl.write.WritableWorkbook wwb;
try {
wwb = Workbook.createWorkbook(new File(fos));
jxl.write.WritableSheet ws = wwb.createSheet("上市新书", 10);
ws.addCell(new jxl.write.Label(0, 1, "书名"));
ws.addCell(new jxl.write.Label(1, 1, "作者"));
ws.addCell(new jxl.write.Label(2, 1, "定价"));
ws.addCell(new jxl.write.Label(3, 1, "出版社"));
int bookSize = ve.size();
BookVO book = new BookVO();
for (int i = 0; i < bookSize; i++) {
book = (BookVO) ve.get(i);
ws.addCell(new jxl.write.Label(0, i + 2, ""
+ book.getBookName()));
ws.addCell(new jxl.write.Label(1, i + 2, book.getBookAuthor()));
ws.addCell(new jxl.write.Label(2, i + 2, ""
+ book.getBookPrice()));
ws
.addCell(new jxl.write.Label(3, i + 2, book
.getBookConcern()));

}
// jxl.write.WritableFont wfc=
// new
// jxl.write.WritableFont(WritableFont.ARIAL,255,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);
// jxl.write.WritableCellFormat wcfFC= new
// jxl.write.WritableCellFormat(wfc);
ws.addCell(new jxl.write.Label(0, 0, "2007年07月即将上市新书!"));
wwb.write();
// 关闭Excel工作薄对象
wwb.close();
} catch (IOException e) {
} catch (RowsExceededException e) {

} catch (WriteException e) {
}
}

public static void readExcel() {
// 通过Workbook的静态方法getWorkbook选取Excel文件
Workbook workbook;
try {
workbook = Workbook.getWorkbook(new File("c:\\上市新书.xls"));
// 通过Workbook的getSheet方法选择第一个工作簿(从0开始)
Sheet sheet = workbook.getSheet(0);

// 通过Sheet方法的getCell方法选择位置为C2的单元格(两个参数都从0开始)
Cell c2 = sheet.getCell(2, 2);

// 通过Cell的getContents方法把单元格中的信息以字符的形式读取出来
String stringc2 = c2.getContents();
System.out.println(stringc2);

// 可以看到正是刚才所说的四个步骤。

// 我们都知道Excel单元格是有格式的,那么这些信息如何取得。
// Cell提供了一个getType方法能够返回单元格的类型信息,同时JXL提供了一个CellType类用来预设Excel中的类型信息,而且JXL提供了一些Cell类的子类用来分别用来表示各种类型的单元格,如LabelCell,NumberCell,DateCell分别表示字符、数值、日期类型的单元格。所以我们可以这样写:
if (c2.getType() == CellType.NUMBER) {
NumberCell nc = (NumberCell) c2;
double numberb2 = nc.getValue();
System.out.println(numberb2);
}

// 最后不要忘记关闭workbook以释放资源:
workbook.close();
// 现在总结一下:三个对象,四个步骤,注意格式。就可以轻松的从Excel文件中读取数据。
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void main(String[] args) throws BiffException, IOException {
// writeExcel("c:\\Test测试Excel.xls");
// System.out.println("OK");
// ArrayList list = new ArrayList();
//
// for (int i = 0; i < 10; i++) {
// BookVO book = new BookVO();
// book.setBookName("WebWork in action+" + i);
// book.setBookAuthor("唐勇+" + i);
// book.setBookPrice("39元+" + i);
// book.setBookConcern("飞思科技+" + i);
// list.add(book);
// }
//
// writeExcelBo("c:\\上市新书.xls", list);
// System.err.println("Book OK!!!");

readExcel();

}

}

分享到:
评论

相关推荐

    java操作excel读写

    java操作excel读写,可以根据自己的需要灵活修改。导入导出excel

    java对Excel的操作

    Java提供了多种库来支持对Excel的读写操作,使得开发者能够方便地进行Excel文件的处理。本篇文章将深入探讨Java对Excel的操作。 首先,我们最常使用的Java库是Apache POI。Apache POI是一个开源项目,它提供了API来...

    java excel 读写 java excel 导入数据库

    以上就是关于"Java Excel 读写"和"Java Excel 导入数据库"的关键知识点,涵盖了从文件读写到数据库操作的整个过程,希望对你的开发工作有所帮助。在实际应用中,根据项目需求选择合适的库,合理设计数据处理逻辑,...

    java 对excel文件操作

    在Java编程环境中,处理Excel文件是一项常见的任务,无论是数据分析、数据导入导出还是报表生成,都需要用到Excel的读写功能。本知识点将详细介绍如何使用Java进行Excel文件操作,包括读取和写入,以及涉及的工作表...

    java poi excel读写demo

    java poi excel操作demo 支持xls和xlsx两个格式的excel文件的读写操作。读取模式包含用户模式和事件驱动模式 ,事件驱动模式能够支持大数据量的读操作,写操作xlsx使用sxssf方式支持大数据量的写入操作。 demo 基于...

    java读写excel文件

    在Java编程中,读写Excel文件是一项常见的任务,特别是在数据处理、数据分析或报表生成的场景下。本篇文章将深入探讨如何使用Java进行Excel文件的读取与写入操作,主要聚焦于Apache POI库,这是一个广泛使用的开源...

    Java操作Excel读写的POI包

    Java操作Excel读写的POI包是Apache软件基金会开发的一个开源项目,主要用来处理Microsoft Office格式的文件,尤其是Excel。在给定的文件列表中,我们看到了三个关键的库文件:`poi-3.9-20121203.jar`、`poi-ooxml-...

    java poi 读写excel

    这篇博客文章可能详细介绍了如何使用Java POI进行Excel的读写操作。 在Java开发中,使用POI库可以实现以下功能: 1. **创建Excel工作簿**:通过`WorkbookFactory.create()`方法可以创建一个新的Excel工作簿对象,...

    excel 读写操作类

    在编程领域,为了实现对Excel文件的自动化处理,我们通常会利用特定的库或API来执行读写操作。本篇将详细介绍如何进行Excel的读写操作,并探讨相关的编程知识点。 1. **库的选择**: - 对于Python,我们可以使用`...

    java 读写excel

    java 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写exceljava 读写excel

    java对excel进行操作

    本项目利用Java的库和javabeans技术来实现对Excel文件的读写、修改和增删行列等操作。以下将详细阐述相关知识点。 1. **Apache POI库**:Apache POI是Java中广泛使用的开源库,它允许程序员创建、修改和显示...

    Java实现Excel读写的poi 5.2.1版本jar

    它将XML文档映射到Java对象,使得POI可以方便地操作Excel文件中的元素。 `poi-ooxml-5.2.1.jar`:此文件包含了处理OOXML文件格式的完整功能,与lite版本相比,它提供了更全面的API和功能。 `poi-scratchpad-5.2.1....

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

    总的来说,Java开发者可以通过Apache POI和JExcelAPI轻松地读写Excel文件,进行各种操作,如设置列宽、处理合并或拆分的单元格。理解并熟练掌握这些库,将极大地提升你在处理Excel数据时的效率。在实际项目中,根据...

    Java对Excel表格的操作.doc

    Java对Excel表格的操作主要涉及到B/S架构下的Web报表处理,由于Java标准库中并不包含直接操作Excel的API,因此开发者通常需要借助第三方库来完成这项任务。本文档着重介绍了两个常用的开源工具:Apache POI和...

    Java读写文件(excel)

    Java读写文件-Excel

    jxl的excel读写操作

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

    Java Excel读写组件jxl使用

    Java Excel读写组件jxl使用 例如导出ofice文件

    Excel文件读写java代码

    2. **Java中的Excel操作**:Java本身并不内置对Excel文件的直接支持,但可以通过第三方库如JXL(Java Excel API)来实现读写Excel文件的功能。JXL是一个开源的Java库,它提供了方便的API,使得开发者可以轻松地操作...

    Java对Excel表格的操作

    ### Java对Excel表格的操作 #### 1. JSP与Excel的交互 在现代软件开发中,尤其是基于B/S(浏览器/服务器)架构的应用程序,处理客户端报表和其他文档的需求变得日益重要。由于B/S架构的限制,如缺乏丰富的客户端...

    java对excel操作所用的jar包.rar

    "java对excel操作所用的jar包.rar" 提供的正是这样一组库,使得在Java中与Excel交互变得简单。这里我们将详细讨论如何使用这些jar包以及相关的知识点。 首先,Java中处理Excel最常用的库是Apache POI。Apache POI是...

Global site tag (gtag.js) - Google Analytics