JAVA利用JXL导出 EXCEL (在原有的excel模板上把数据导到excel上)

该博客主要介绍了Java使用jxl库导出Excel文件的方法。首先添加jxl依赖,接着给出了详细的代码实现,包括文件复制、样式设置、数据写入等操作。还提到POI和jxl对Excel版本的支持差异,以及针对特定警告的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加依赖

<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>

 

package com.cyg.writeexcel;

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

import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public void writeExcel(){
String path="D:/";
String filePathName = null;
Long nowTime=System.currentTimeMillis();
String title = "导出管理表";
String fileName = title+nowTime;
String sourFile =path+"poi"+File.separatorChar+"exporttemplate"+File.separatorChar+"ymb.xls";//原模板
String destFile = path +"poi"+File.separatorChar+"xlsoutput"+File.separatorChar+nowTime; //复制到存放的目标位置
File file = new File(sourFile);
if(file.isFile()) {
File savefile = new File(destFile);
if (!savefile.exists()) {
savefile.mkdirs();
}
FileInputStream input =new FileInputStream(sourFile);
FileOutputStream output = new FileOutputStream(destFile+File.separatorChar+fileName+".xls");
int in = input.read();
while( in != -1) {
output.write(in);
in =input.read();
}

filePathName =destFile+File.separatorChar+fileName+".xls";
FileInputStream inFile=new FileInputStream(filePathName);
jxl.Workbook workbookA = jxl.Workbook.getWorkbook(inFile);
WritableWorkbook wwb = jxl.Workbook.createWorkbook(new File(filePathName),workbookA);
WritableSheet sheetA = wwb.getSheet(0);// 获取文件第一个sheet
Label labelA = null;
WritableFont font = new WritableFont(WritableFont.createFont("宋体"),
8, WritableFont.NO_BOLD);// 字体样式
WritableCellFormat wcf = new WritableCellFormat(font);
wcf.setAlignment(jxl.format.Alignment.CENTRE);//平行居中
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中
wcf.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); //BorderLineStyle边框

//获取数据源
for (int i = 1; i < 1000; i++) {
labelA = new Label(0,i,i+" ",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(1,i,"20180101" + i,wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(2,i,"开发00"+i,wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(3,i,i+" ");
sheetA.addCell(labelA);
labelA = new Label(4,i,"20180101" + i,wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(5,i,i+" ",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(6,i,"的官方价格就感觉几个几个几个",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(7,i,"的官方价格就感觉几个几个几个",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(8,i,"的官方价格就感觉几个几个几个",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(9,i,"的官方价格就感觉几个几个几个",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(10,i,"的官方价格就感觉几个几个几个",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(11,i,"的官方价格就感觉几个几个几个",wcf);//列、行、值、样式
sheetA.addCell(labelA);
labelA = new Label(12,i,"的官方价格就感觉几个几个几个",wcf);//列、行、值、样式
sheetA.addCell(labelA);

}

 

output.flush();
output.close();
input.close();
wwb.write(); //写入数据
wwb.close();
workbookA.close(); //关闭连接
System.out.println("完成");
}
}

注:POI支持excel2003和2007,而jxl只支持excel2003。

如果有如下警告

Warning: Cannot read name ranges for _ T o c 521 -setting to empty
Warning: Usage of a local non-builtin name
解决方案:打开模板==》公式==》名称管理器==》删除里面表格的信息

 

转载于:https://www.cnblogs.com/run1/p/11039054.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值