JAVA复制Excel文件并另存文件支持格式格式xls和xslx

工作做本来是用的jxl方式读取的文件但是jxl不知此2007格式的读取

网上搜了好久然后自己整理出来一份放到这里希望可以帮到你

不多说了,直接贴代码知己看吧如果有更好的方式可以在评论区留言

package com.lesen.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.lang3.StringUtils;
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.BorderStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
* LESEN on 2020-04-22
*
* */
public class excl3 {

public static void main(String[] args) throws Exception {
// save();
getSheet();
}
/**
* @用途: 将目标文本复制
* 此方法只适用于xls文档
* @param path 路径
* @throws Exception
* */
public static void getSheet() throws Exception
{
String path=”D:\\zwoutputtemp\\123.xls”;
String path1=”D:\\zwoutputtemp\\1234.xls”;
//判断格式是否正确
// File file=new File(path);
// String fileName = file.getName();
// //判断文件是否是excel文件
// if (!StringUtils.upperCase(fileName).endsWith(“xsl”)) {
//// SQLHelper.LOGGERerror(fileName + “不是excel文件”, null, null);
// System.out.println(“不是excel文件”);
// throw new IOException(fileName + “不是excel文件2003格式”);
// }
// System.out.println(“检查通过”);
FileInputStream fs = new FileInputStream(path);
POIFSFileSystem ps=new POIFSFileSystem(fs);
HSSFWorkbook wb=new HSSFWorkbook(ps);
FileOutputStream out =new FileOutputStream(path1);

HSSFSheet sheet=wb.getSheetAt(0);//括号里的内容为工作簿低n页从0还是算起

setCell(sheet, B, 5, “测试填充”);
setCell(sheet, T, 16, “123”);
//最后打开文件流把编辑的内容灌进去,最后再关闭输出流
out.flush();
wb.write(out);
out.close();
}

/**
*@用途 填充单元格内容,不知此图片填充
*@注意:此方法只能用去2007格式的excel文件
* @param wb 已存在的模板(此参数可不用)
* @param st 获取到的模板表格工作簿
* @param cellnum 列数
* @param rownum 行数
*
* */
public static void setCell(HSSFSheet sheet,int cellnum ,int rownum,String str)
{
int rows=rownum-1;
int num=cellnum;
HSSFRow row=sheet.getRow(rows);
HSSFCell cell=row.createCell(num);
cell.setCellValue(str);
cell.getCellStyle().setBorderBottom(BorderStyle.THIN);
System.out.println(sheet.getLastRowNum()+” “+row.getLastCellNum());//此处编辑样式因为没有填充后下边框,就手工加上了
}

/**
* @用途: 将目标文本复制
* 此方法只适用于xlsx文档
* */
private static void save() throws Exception {
//根据路径读取原有的模板
XSSFWorkbook wb=new XSSFWorkbook(new File(“D:\\zwoutputtempbz\\123.xlsx”));
XSSFSheet st=wb.getSheetAt(0);
//设置要输出的路径
FileOutputStream out= new FileOutputStream(new File(“D:\\zwoutputtempbz\\1234.xlsx”));
//填充excel内容
saveCell(st, C, 4, “测试中。。。。”);
saveCell(st, M, 4, “111234”);
saveCell(st, O, 5, “11111”);
st=wb.getSheetAt(1);
saveCell(st, F, 4, “111.11”);

st=wb.getSheetAt(2);
saveCell(st, C, 5, “11111”);
//最后打开文件流把编辑的内容灌进去,最后再关闭输出流
out.flush();
wb.write(out);
out.close();
// System.out.println(row.getPhysicalNumberOfCells()+” “+row.getLastCellNum());

}
/**
*@用途 填充单元格内容,不知此图片填充
*@注意:此方法只能用去2007格式的excel文件
* @param wb 已存在的模板(此参数可不用)
* @param st 获取到的模板表格工作簿
* @param cellnum 列数
* @param rownum 行数
*
* */
public static void saveCell(XSSFSheet st,int cellnum ,int rownum,String str)

{
int rows=rownum-1;
int num=cellnum;//因为是从0还是计算的,这里传入当前列并减去1
XSSFRow row=st.getRow(rows);
row.createCell(num).setCellValue(str);
System.out.println(st.getLastRowNum()+” “+row.getLastCellNum());

}
static final int A = 0;
static final int B = 1;
static final int C = 2;
static final int D = 3;
static final int E = 4;
static final int F = 5;
static final int G = 6;
static final int H = 7;
static final int I = 8;
static final int J = 9;
static final int K = 10;
static final int L = 11;
static final int M = 12;
static final int N = 13;
static final int O = 14;
static final int P = 15;
static final int Q = 16;
static final int R = 17;
static final int S = 18;
static final int T = 19;
static final int U = 20;
static final int V = 21;
static final int W = 22;
static final int X = 23;
static final int Y = 24;
static final int Z = 25;
static final int AA = 26;
static final int AB = 27;
static final int AC = 28;
static final int AD = 29;
static final int AE = 30;
static final int AF = 31;
static final int AG = 32;
static final int AH = 33;
static final int AI = 34;
static final int AJ = 35;
static final int AK = 36;
static final int AL = 37;
static final int AM = 38;
static final int AN = 39;
static final int AO = 40;
static final int AP = 41;
static final int AQ = 42;
static final int AR = 43;
}

关注公众号获取Excel-code 获取源码和jar包

 

————–如有转载请标明出处

上一篇
下一篇