读取xlsx文件的内容输入到xls文件中

package com.cn.peitest.excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TreeMap;

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.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class XlsxToXlsxTransformUtil {
	
	/*
	 * 
	 * 
	 * 读取xlsx文件的内容输入到xls文件中
	 * 
	 * */

	public static void main(String[] args) throws IOException {
		
		//输入xlse格式
		POIFSFileSystem fs = null;//文件输入流
		XSSFWorkbook xwb = null;//设置工作簿
		XSSFSheet xsheet = null;//设置表单
		XSSFRow xrow = null;//获得行
		XSSFCell xcell = null;//行列单元格的值
		//输出xls格式
		XSSFWorkbook hwb = new XSSFWorkbook();  
		XSSFSheet hsheet =null;// wb.createSheet("sheet1");
		XSSFRow hrow = null;//sheet.createRow(0);
		XSSFCell hcell=null;//row0.createCell(0);
		//cell0.setCellValue("0000");
		
		SimpleDateFormat df = new SimpleDateFormat("yyyy_MM_dd_HH_mm");//设置日期格式
		System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
		
		
		File inf=new File("C:\\Users\\pei\\Desktop\\新建 XLS 工作表.xls");
		File ouf=new File("C:\\Users\\pei\\Desktop\\HYD test 1_0_2 tm="+df.format(new Date())+".xlsx"); 
		
		boolean sheetflag=true;
		int sheetid=0;
		
		boolean rowflag=true;
		int rowid =0;
		try {
			FileInputStream fis = new FileInputStream(inf);//文件输入流
			xwb=new XSSFWorkbook(fis);//设置工作簿
			System.out.println("表单数="+xwb.getNumberOfSheets());//获取工作表单数目
			while(sheetflag){
				if(sheetid==xwb.getNumberOfSheets()){break;}	
				xsheet=xwb.getSheetAt(sheetid);//设置从第几个表单开始读取
				if(xsheet==null){
					sheetflag=false;
				}else{
					hsheet=hwb.createSheet(xsheet.getSheetName());//新的工作簿创建工作表单数
					sheetid++;
					rowid=0;
					rowflag=true;
					while(rowflag){
						hrow=hsheet.createRow(rowid);//新的工作簿表单创建行数
						xrow=xsheet.getRow(rowid);//xlsx获得行
						if(xrow==null){
							rowflag=false;
						}else{
							rowid++;
							for(int c=0;c<30;c++){
								
								xcell=xrow.getCell(c);//xlsx获得行列的内容
								if(xcell!=null&&xcell.toString().length()>0){
									String a1=xcell.toString().replaceAll(".00", "");//.00替换为空字符串	
									String a2=a1.replaceAll(".0", "");//.0替换为空字符串
									String data=a2.replaceAll("O", "0");//o替换为0
									hrow.createCell(c).setCellValue(data);//hrow.createCell(c)创建行列单元格,.setCellValue(data)调用xls的方法将内容写入单元格
								}
							}
						}
					}
				}
			}
			
			//FileOutputStream output=new FileOutputStream(ouf);  
			//xwb.write(output);
			//System.out.println("导出结束");
			//output.close();  
		} catch (Exception e) {
			e.printStackTrace();
		}
		finally{
			System.out.println("处理结束。。。。等待导出完成");
			FileOutputStream output=new FileOutputStream(ouf);  
			hwb.write(output);
			System.out.println("导出结束");
			output.close();
		}
		
	}
	
}

  

posted @ 2020-09-29 13:43  红尘沙漏  阅读(340)  评论(0编辑  收藏  举报