poi,jxl读取excel文件

poi读取excel文件

package test_poi;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

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;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.Test;

public class TestPoi {
@Test
public void createWorkBook() throws Exception {
Workbook wb = new HSSFWorkbook(); // 创建工作簿
Sheet sheet = wb.createSheet("first sheet"); // 创建工作表并且定义工作表名称
Row createRow = sheet.createRow(0); // 定义第一行
// Row createRow2 = sheet.createRow(1);// 定义第二行
createRow.createCell(0).setCellValue("hehe"); // 第一行第一个列,并赋值
for (int i = 0; i < 10; i++) {
createRow.createCell(i + 1).setCellValue("hehe" + i); // 循环第一行
// createRow2.createCell(i).setCellValue("第二行" + i); // 循环第二行
}
OutputStream fileOut = new FileOutputStream("d:\\poi.xls");// 输出流
wb.createSheet("two");// 创建第二个工作表并定义名称
wb.write(fileOut); // 将文件输出到文件中
fileOut.close(); // 关闭输出流,,
}

@Test
public void readExl() throws Exception {
InputStream is = new FileInputStream("d:\\poi.xls");
POIFSFileSystem fs = new POIFSFileSystem(is);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
// 获得总行数,第一行算标题不算在行数内,所以总的行数应该是lastRowNum+1
int lastRowNum = sheet.getLastRowNum();
System.out.println(lastRowNum);
// 直接根据行号获取信息
HSSFRow row = sheet.getRow(0);// 获取第一行(标题)
// 获取当前行总列数
int physicalNumberOfCells = row.getPhysicalNumberOfCells();
System.out.println("标题总列数=" + physicalNumberOfCells);
// 单元格内容格式
int cellType = row.getCell(3).getCellType();// 格式是:
// HSSFCell.CELL_TYPE_STRING...
// 获取不同类型的值
double numericCellValue = row.getCell(0).getNumericCellValue();
boolean booleanCellValue = row.getCell(1).getBooleanCellValue();
Date dateCellValue = row.getCell(2).getDateCellValue();

System.out.println(cellType + "********");

}

}

jxl读取execl文件创建
创建工作簿,就是一个Excel文档,参数最常用的就是文件输出流和文件,还有的很多。。。

复制代码
WritableWorkbook wwb = null;
File file = new File("D:\\test.xls");
wwb = Workbook.createWorkbook(file);
OutputStream os = new FileOutputStream("D:\\test.xls");
wwb = Workbook.createWorkbook(os);
复制代码
创建工作表

WritableSheet sheet =wwb.createSheet(name, x);//x表示第x+1个工作表,名字是name
添加单元格内容

Label label = new Label(col, rows, content);//表示 第col+1列,第rows+1的单元格的内容是content
sheet.addCell(label);
固定表头

SheetSettings ss = sheet.getSettings();
ss.setVerticalFreeze(1); // 固定表头,无论怎么往下翻页,第一行永远在第一行
填充数据

数据填充这块稍微复杂点,涉及到数据单元格的格式问题。

a)、填充数字
jxl.write.Number numb = new jxl.write.Number(1, 1, 250);
sheet.addCell(numb);

b)、填充格式化的数字
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(nf);
jxl.write.Number n = new jxl.write.Number(2, 1, 2.451, wcf);
sheet.addCell(n);

c)、填充日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String newdate = sdf.format(new Date());
label = new Label(2, 2, newdate);
sheet.addCell(label);

d)、填充文本
label = new Label(3, 3, "周星驰");
sheet.addCell(label);

e)、填充boolean值
jxl.write.Boolean bool = new jxl.write.Boolean(4, 1, true);
sheet.addCell(bool);

合并单元格

通过writablesheet.mergeCells(int x,int y,int m,int n);来实现的。
表示将从第x+1列,y+1行到m+1列,n+1行合并 (四个点定义了两个坐标,左上角和右下角)
结果是合并了m-x+1行,n-y+1列,两者乘积就是合并的单元格数量。

sheet.mergeCells(0, 6, 3, 8);
label = new Label(0, 6, "合并了12个单元格");
sheet.addCell(label);

添加单元格的式样

主要是改变单元格背景、字体、颜色等等。
WritableCellFormat wc = new WritableCellFormat();
// 设置居中
wc.setAlignment(Alignment.CENTRE);
// 设置边框线
wc.setBorder(Border.ALL, BorderLineStyle.THIN);
// 设置单元格的背景颜色
wc.setBackground(jxl.format.Colour.RED);
label = new Label(1, 5, "字体", wc);
sheet.addCell(label);

设置单元格字体

// 设置字体
jxl.write.WritableFont wfont = new jxl.write.WritableFont(WritableFont.createFont("楷书"), 20);
WritableCellFormat font = new WritableCellFormat(wfont);
label = new Label(2, 6, "楷书", font);
sheet.addCell(label);

将工作写成文件

// 写入数据
wwb.write();
// 关闭文件
wwb.close();

读取
获取工作表(sheet)的值
Workbook workbook = Workbook.getWorkbook(file);
Sheet sheet = workbook.getSheet(0);
String name = sheet.getName();
System.out.println(name);
行列的批量操作
//获取所有的工作表
jxl.write.WritableSheet[] sheetList = wwb.getSheets();
//获取第1列所有的单元格
jxl.Cell[] cellc = sheet.getColumn(0);
//获取第1行所有的单元格
jxl.Cell[] cellr = sheet.getRow(0);
//获取第1行第1列的单元格
Cell c = sheet.getCell(0, 0);

获取单元格的值

//获取单元格的值,不管什么单元格,返回都是字符串
String value = c.getContents();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值