经常要在程序中输出一些数据,为了方便给别人看,或者利用一下excel的画图功能;又或者需要将excel的数据读入进行处理。本文教你这事如何下手,但并不深入,要深入这里有详细说明
方式一:输出为csv格式的文件
(这个仅能输出数据到excel使用)
由于excel是支持csv格式的数据的,所以仅仅只是简单的使用,把数据输出为csv格式即可,这种方法对任何编程语言来说都一样,就不再这里演示了,仅提供一个csv格式数据的例子(这里还要注意编码的问题,小心乱码):
test.csv
X坐标,Y坐标
1,2.1
2,2.3
利用excel即可打开此文件
方式二:利用Apache的开源项目POI
(这个才是正道,不仅可以操作Excel,还可以操作MF相关的offic全套,包括viso)
由于我只在程序中使用Excel,这里就简单介绍下excel的使用, 并且该教程只是一个入门教程,详细使用请查阅Apache官网的使用说明
首先到Apache的官网下载poi的jar包添加到项目中,
1. 编写一个简单的输出到excel的程序作为演示
public static void main(String[] args) throws Exception {
String filePath = "./template.xls";
File file = new File(filePath);
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sheet1");//创建一个名为Sheet1的表单
HSSFRow row = sheet.createRow(0);//创建第一行
row.createCell(0).setCellValue("X坐标");//第一行的第一列内容为 X坐标
row.createCell(1).setCellValue("Y坐标");//第一行的第二列内容为 Y坐标
row.setHeightInPoints(30); // 设置行的高度
HSSFRow row1 = sheet.createRow(1);//创建第二行
row1.createCell(0).setCellValue("1");//第二行的第一列内容为 1
row1.createCell(1).setCellValue("2.1");//第二行的第二列内容为 2.1
HSSFRow row2 = sheet.createRow(2);
row2.createCell(0).setCellValue("2");
row2.createCell(1).setCellValue("2.3");
workbook.setActiveSheet(0);
try {
workbook.write(outputStream);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
效果如下
2. 编写一个简单的读取excel的程序作为演示
public static void main(String[] args) throws Exception {
String filePath = "./template.xls";
FileInputStream fileInputStream = null;
HSSFSheet sheet = null;
try {
fileInputStream = new FileInputStream(filePath);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
POIFSFileSystem fileSystem = new POIFSFileSystem(bufferedInputStream);
HSSFWorkbook workbook = new HSSFWorkbook(fileSystem);
sheet = workbook.getSheet("Sheet1");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int lastRowIndex = sheet.getLastRowNum();
System.out.println(lastRowIndex);
for (int i = 0; i <= lastRowIndex; i++) {
HSSFRow row = sheet.getRow(i);//读取一行
if (row == null) {
break;
}
short lastCellNum = row.getLastCellNum();
for (int j = 0; j < lastCellNum; j++) {
String cellValue = row.getCell(j).getStringCellValue();//读取每行中每列
System.out.println(cellValue);
}
}
}
运行即可输出excel中的数据。
这里仅仅带大家入门,以免一些同学不知道从哪里下手,稍微详细点中文介绍请看这篇文章;POI作为一个开源项目,不仅仅可以操作Excel,还可以操作Word, PPT总之微软那一套都可以,由于不经常使用,所以要深入使用的请直接查阅Apache官网POI的资料,不要在网上乱找资料了,太浪费时间。