欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现读取及生成Excel文件的方法

程序员文章站 2024-02-16 19:46:58
本文实例讲述了java实现读取及生成excel文件的方法。分享给大家供大家参考,具体如下: 一、读取excel文件 需要先下载poi-3.0.1-final-20070...

本文实例讲述了java实现读取及生成excel文件的方法。分享给大家供大家参考,具体如下:

一、读取excel文件

需要先下载poi-3.0.1-final-20070705.jar(点击此处本站下载poi-3.0.1-final-20070705.jar。)

excelexamread.java

import java.io.file;
import java.io.fileinputstream;
import java.io.ioexception;
import org.apache.poi.hssf.usermodel.hssfcell;
import org.apache.poi.hssf.usermodel.hssfrow;
import org.apache.poi.hssf.usermodel.hssfsheet;
import org.apache.poi.hssf.usermodel.hssfworkbook;
public class excelexamread {
/** 读excel文件内容 */
public void showexcel(string excelname) {
file file = new file(excelname);
fileinputstream in = null;
try {
// 创建对excel工作簿文件的引用
in = new fileinputstream(file);
hssfworkbook hwb = new hssfworkbook(in);
hssfsheet sheet = hwb.getsheet("myfirstexcel");// 根据指定的名字来引用此excel中的有效工作表
// 读取excel 工作表的数据
system.out.println("下面是excel文件" + file.getabsolutepath() + "的内容:");
hssfrow row = null;
hssfcell cell = null;
int rownum = 0; 
// 行标
int colnum = 0; 
// 列标
for (; rownum < 9; rownum++) {
// 获取第rownum行
row = sheet.getrow((short) rownum);
for (colnum = 0; colnum < 5; colnum++) {
cell = row.getcell((short) colnum);// 根据当前行的位置来创建一个单元格对象
system.out.print(cell.getstringcellvalue() + "\t");// 获取当前单元格中的内容
}
system.out.println(); // 换行
}
in.close();
} catch (exception e) {
system.out
.println("读取excel文件" + file.getabsolutepath() + "失败:" + e);
} finally {
if (in != null) {
try {
in.close();
} catch (ioexception e1) {
}
}
}
}
public static void main(string[] args) {
excelexamread excel = new excelexamread();
string excelname = "d:/excelexamread.xls";
excel.showexcel(excelname);
}
}

二、生成excel文件

excelexamwrite.java:

import java.io.file;
import java.io.fileoutputstream;
import java.io.ioexception;
import org.apache.poi.hssf.usermodel.hssfcell;
import org.apache.poi.hssf.usermodel.hssfcellstyle;
import org.apache.poi.hssf.usermodel.hssffont;
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.hssf.util.region;
//创建excel文件
public class excelexamwrite {
// 新建一个excel文件,里面添加5行5列的内容,另外添加一个合并2行5列的大单元格以及一个合并2行1列的5个合并单元格。
public void createexcel(string filename) {
file file = new file(filename);// 创建excel文件对象
fileoutputstream fout = null;
try {
// 创建一个新的hssfworkbook对象
hssfworkbook workbook = new hssfworkbook();
// 创建一个excel的工作表,可以指定工作表的名字
hssfsheet sheet = workbook.createsheet("myfirstexcel");
// 创建字体,红色、粗体
hssffont font = workbook.createfont();
font.setcolor(hssffont.color_red);
font.setboldweight(hssffont.boldweight_bold);
hssffont font1 = workbook.createfont();
// 创建字体,黑色、非粗体
font1.setcolor(hssffont.color_normal);
font1.setboldweight(hssffont.boldweight_normal);
// 创建单元格的格式,如居中、左对齐等
hssfcellstyle cellstyle = workbook.createcellstyle();
cellstyle.setalignment(hssfcellstyle.align_center); // 水平方向上居中对齐
// 垂直方向上居中对齐
cellstyle.setverticalalignment(hssfcellstyle.vertical_center);
cellstyle.setfont(font); // 设置字体
hssfcellstyle cellstyle1 = workbook.createcellstyle();
cellstyle1.setalignment(hssfcellstyle.align_left);
cellstyle1.setfont(font1);
// 下面将建立一个4行3列的表。第一行为表头。
int rownum = 0;// 行标
int colnum = 0;// 列标
// 建立表头信息
hssfrow row = sheet.createrow((short) rownum); // 在索引0的位置创建行
hssfcell cell = null; // 单元格
for (colnum = 0; colnum < 5; colnum++) {
// 在当前行的colnum列上创建单元格
cell = row.createcell((short) colnum);
// 定义单元格为字符类型,也可以指定为日期类型、数字类型
cell.setcelltype(hssfcell.cell_type_string);
// 定义编码方式,为了支持中文,这里使用了encoding_utf_16
cell.setencoding(hssfcell.encoding_utf_16);
cell.setcellstyle(cellstyle); // 为单元格设置格式
cell.setcellvalue("表头-第" + (colnum + 1) + "列"); // 添加内容至单元格
}
rownum++;
for (; rownum < 5; rownum++) {
// 新建第rownum行
row = sheet.createrow((short) rownum);
for (colnum = 0; colnum < 5; colnum++) {
// 在当前行的colnum位置创建单元格
cell = row.createcell((short) colnum);
cell.setencoding(hssfcell.encoding_utf_16);
cell.setcellstyle(cellstyle1);
cell.setcellvalue("表体-第" + rownum + "行第" + (colnum + 1)
+ "列");
}
}
// 合并单元格
// 先创建2行5列的单元格,然后将这些单元格合并为2个大单元格
rownum = 5;
for (; rownum < 9; rownum++) {
row = sheet.createrow((short) rownum);
for (colnum = 0; colnum < 5; colnum++) {
// 在当前行的colnum位置创建单元格
cell = row.createcell((short) colnum);
}
}
// 建立第一个大单元格,高度为2,宽度为2
rownum = 5;
colnum = 0;
region region = new region(rownum, (short) colnum, (rownum + 1),
(short) (colnum + 4));
sheet.addmergedregion(region);
// 获得第一个大单元格
cell = sheet.getrow(rownum).getcell((short) colnum);
cell.setencoding(hssfcell.encoding_utf_16);
cell.setcellstyle(cellstyle);
cell.setcellvalue("合并行单元格");
// 建立第二个大单元格,高度为2,宽度为3
rownum = 7;
for (colnum = 0; colnum < 5; colnum++) {
region = new region(rownum, (short) colnum, (rownum + 1),
(short) (colnum));
sheet.addmergedregion(region);
// 获得第二个大单元格
cell = sheet.getrow(rownum).getcell((short) colnum);
cell.setencoding(hssfcell.encoding_utf_16);
cell.setcellstyle(cellstyle);
cell.setcellvalue("合并列单元格");
}
// 新建一输出文件流
fout = new fileoutputstream(file);
// 将创建的内容写到指定的excel文件中
workbook.write(fout);
fout.flush();
fout.close();// 操作结束,关闭文件
system.out.println("excel文件创建成功!\nexcel文件的存放路径为:"
+ file.getabsolutepath());
} catch (exception e) {
system.out.println("excel文件" + file.getabsolutepath()
+ "创建失败\n其原因为:" + e);
} finally {
if (fout != null) {
try {
fout.close();
} catch (ioexception e1) {
}
}
}
}
public static void main(string[] args) throws exception {
excelexamwrite excel = new excelexamwrite();
string filename = "e:/excelexamwrite.xls";
excel.createexcel(filename);
}
}

更多关于java相关内容感兴趣的读者可查看本站专题:《java操作excel技巧总结》、《java+mysql数据库程序设计总结》、《java数据结构与算法教程》、《java文件与目录操作技巧汇总》及《java操作dom节点技巧总结

希望本文所述对大家java程序设计有所帮助。