Java读写excel文件代码

教你如何使用简单java代码读写excel文件

***提示:最基础教程代码教学


学习内容

在学习或者工作中,Excel文件作为最基础的办公表格,会被频繁使用。很多情况下,Excel里自带的公式或者函数已经不能简单满足我们的工作需求。我们可以使用一些简单编程知识,使得我们对excel的掌控更加自如。

`提示:本次学习使用java直接读取excel,并经过相应计算,输出为想要的相应格式的excel文件。

内容:

1、输入excel文件:里面包含一些水果的名称和价格。
Java读写excel文件代码_第1张图片

2、输出文件:通过程序计算,在输出文件里面输出购买水果的名称和总价。
在这里插入图片描述

程序部分:

  1. 搭建 Java 开发环境
  2. 使用apache POI来进行excel 的读写

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.commons.io.FileUtils;

Java读写excel文件代码_第2张图片

所需要的所有程序包如上,没有的可以到apache官网下载,或者联系我发(评论区留下你的邮箱)!

  1. 读取excel函数代码(完整)
//读取excel函数:
	public List readExcel(File file) throws Exception {      //读取excel函数
        //获取文件名字
        String fileName = file.getName();
        //获取文件类型
        String fileType = fileName.substring(fileName.lastIndexOf(".") + 1);
        System.out.println(" **** fileType:" + fileType);
        //获取输入流
        InputStream stream = new FileInputStream(file);
        //获取工作薄
        Workbook xssfWorkbook = null;
        if (fileType.equals("xls")) {
            xssfWorkbook = new HSSFWorkbook(stream);
        } else if (fileType.equals("xlsx")) {
            xssfWorkbook = new XSSFWorkbook(stream);
        } else {
            System.out.println("您输入的excel格式不正确");
        }
   //     TranTaskDao a = null;
        List aList = new ArrayList();
        // Read the Sheet
        Sheet Sheet = xssfWorkbook.getSheetAt(0);
        // Read the Row 从0开始
        for (int rowNum = 0; rowNum <= Sheet.getLastRowNum(); rowNum++) {
            Row Row = Sheet.getRow(rowNum);
            if (Row != null) {
                //判断这行记录是否存在
                if (Row.getLastCellNum() < 1 || "".equals(Row.getCell(0))) {
                    continue;
                }
                //获取每一行封装成对象
                List<String> rowList = new ArrayList<String>();
                for(int colNum=0;colNum<Row.getLastCellNum();colNum++)                	
                {               		
                	rowList.add(colNum, Row.getCell(colNum).toString());               	
                }                
                aList.add(rowList);       
            }
        }
        return aList;
    }

以上为读取excel的函数,在下面的main函数里直接调用这个函数( readExcel(); )即可,支持xls,xlsx格式。

  1. 在main函数里操作调用readExcel();函数,读取的excel文件中的内容,并整理输出为另一个excel文件
//main函数里直接调用
public static void main(String[] args) {
		// TODO Auto-generated method stub		
   //  String Array[][]=new String[1000][50];   也可以用数组保存读取的excel文件		     	
		ExcelClass te=new ExcelClass();   //这里ExcelClass是你创建的这个类的类名,我的类名就是ExcelClass
		File f= new File("F:\\输入.xlsx");   //要导入的excel文件路径
		try {
			List list=te.readExcel(f);
						
			 HSSFWorkbook workbook=new HSSFWorkbook();
		        //创建工作表sheeet0
		        HSSFSheet sheet0=workbook.createSheet();
		        //创建第一行
		        HSSFRow row0=sheet0.createRow(0);		        
		        //创建Excel文件薄			       
		        String[] title={"水果","数量","总价"};    //为输出表格生产标题
		        HSSFCell cell=null;
		        for (int i1=0;i1<title.length;i1++){
		            cell=row0.createCell(i1);
		            cell.setCellValue(title[i1]);		            
		        }		     		        
		        /**	//也可以用数组保存读取的excel文件
		        *	for(int i=0;i //也可以用数组保存读取的excel文件
						HSSFRow nextrow=sheet0.createRow(1);     //将excel第二行作为数据写入行的初始行					
			  HSSFCell cell2=nextrow.createCell(0);     //初始化第二行第一格
			  cell2.setCellValue(((List) list.get(1)).get(0).toString()+"+"+((List) list.get(4)).get(0).toString());  //购买2个苹果2个火龙果,写入数据	
			  		            
			  cell2=nextrow.createCell(1);  //初始化第二行第二格
              cell2.setCellValue(2+2);  // 总数量,写入数据
			            
			  cell2=nextrow.createCell(2);  //初始化第二行第三格
			  cell2.setCellValue(Double.valueOf((String) ((List) list.get(1)).get(1))*2+Double.valueOf((String) ((List) list.get(4)).get(1))*2);  //购买2个苹果2个火龙果,计算金额			  		
		        //创建一个excel文件
		        File file=new File("F:/poi_test0322.xls");   //输出创建好的文件路径
		        file.createNewFile();
		        FileOutputStream stream=FileUtils.openOutputStream(file);
		        workbook.write(stream);
		        stream.close();		        	   
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}				
	}

以上是main函数的完整部分,调用readExcel()函数,直接获取excel里面的内容,从而进行处理,最后输出!

小结:

这里采用apache POI来进行excel 的读写,读写excel 的基本步骤就这么简单。这个程序的处理excel内容部分只是最简单的教程例子,你可以根据你的需求,在这个基础代码上改进填充,从而实现更复杂的程序设计。掌握好这个,将使得你无论在工作中还是学习上,都可以更加轻松自如的对excel进行操作,从而简化工作流程,提高工作效率。
希望这能对您有所帮助!

提示
**以上程序是直接将导入的excel路径写死,也可以通过前端页面上传按钮动态上传。如有需要,将会后续更新!

你可能感兴趣的:(java)