今天小编就为大家分享一篇Java实现将txt文件转成xls文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
最近项目用到txt文件和xls文件的转换,这里记录一下具体的思路。
下面利用java代码实现txt转xls,这里要使用到jxl.jar包,这个包是通过java来操作excel表格的工具类库。
该jar包支持字体、数字、日期操作,能够修饰单元格属性,还能够支持图像和图表,基本上已经满足我们的日常操作,最主要的是这套api是纯java实现的,在windows和linux操作系统下,它都可以正确的处理excel文件。
具体实现代码如下:package test;
import java.io.bufferedreader;
import java.io.file;
import java.io.fileinputstream;
import java.io.filereader;
import java.io.ioexception;
import java.io.inputstreamreader;
import java.util.arraylist;
import jxl.workbook;
import jxl.write.label;
import jxl.write.writablesheet;
import jxl.write.writableworkbook;
public class txttoxls {
//txt文本路径
static string txtfilepath = "d:\\super_plu.txt";
//xls路径
static string xlsfilepath = "d:\\super_plu.xls";
//每一列的列名
static string c1name, c2name, c3name, c4name, c5name, c6name, c7name, c8name;
public static void main(string args[]) {
// 将txt文件进行解析,保存为list
arraylist<txtfile> xlslist = gettxtinfos();
// 将list以xls保存
transtoexcel(xlslist);
}
private static arraylist<txtfile> gettxtinfos() {
arraylist<txtfile> txtfilelist = new arraylist<txtfile>();
bufferedreader bufferedreader = null;
try {
// 这里注意指定文件的编码格式
bufferedreader = new bufferedreader(new inputstreamreader(new fileinputstream(txtfilepath), "gbk"));
string element = null;
int index = 0;
while ((element = bufferedreader.readline()) != null) {
//如果是此行为空,则跳过
if(element.trim().equals("")){
continue;
}
//第一行作为每列名称
string[] value = element.trim().split(",");
if (index == 0) {
c1name = value[0];
c2name = value[1];
c3name = value[2];
c4name = value[3];
c5name = value[4];
c6name = value[5];
c7name = value[6];
c8name = value[7];
index = 1;
continue;
}
//从第二行开始读取每行内容,以txtfile形式存储
txtfile txtfile = new txtfile(integer.parseint(value[0]), integer.parseint(value[1]), value[2], value[3], value[4], integer.parseint(value[5]), integer.parseint(value[6]), integer.parseint(value[7]));
txtfilelist.add(txtfile);
}
} catch (exception e) {
e.printstacktrace();
} finally {
if (bufferedreader != null) {
try {
bufferedreader.close();
} catch (ioexception e) {
e.printstacktrace();
}
}
}
return txtfilelist;
}
private static void transtoexcel(arraylist<txtfile> txtfilelist) {
writableworkbook book = null;
try {
// 创建一个xls文件
book = workbook.createworkbook(new file(xlsfilepath));
// 生成名为'商品信息'的工作表,这里参数0表示第一页
writablesheet sheet = book.createsheet("商品信息", 0);
// 在label对象为每一列添加列名,即每一列的第一行
label label1 = new label(0, 0, c1name);
label label2 = new label(1, 0, c2name);
label label3 = new label(2, 0, c3name);
label label4 = new label(3, 0, c4name);
label label5 = new label(4, 0, c5name);
label label6 = new label(5, 0, c6name);
label label7 = new label(6, 0, c7name);
label label8 = new label(7, 0, c8name);
// 将定义好列名添加到工作表中
sheet.addcell(label1);
sheet.addcell(label2);
sheet.addcell(label3);
sheet.addcell(label4);
sheet.addcell(label5);
sheet.addcell(label6);
sheet.addcell(label7);
sheet.addcell(label8);
/*
* 遍历传进来的list,把每一行的内容再顺序加入到工作表中,
* 在生成数字单元格时, 必须使用number的完整包路径
*/
for (int i = 0; i < txtfilelist.size(); i++) {
txtfile p = txtfilelist.get(i);
jxl.write.number item_code = new jxl.write.number(0, (i+1), p.item_code);
jxl.write.number plu = new jxl.write.number(1, (i+1), p.plu);
label commodity = new label(2, (i+1), p.commodity);
label ingredient= new label(3, (i+1), p.ingredient);
label special = new label(4, (i+1), p.special);
jxl.write.number use_by_date = new jxl.write.number(5, (i+1), p.use_by_date);
jxl.write.number use_by_date_print = new jxl.write.number(6, (i+1), p.use_by_date_print);
jxl.write.number packge_by_date_print = new jxl.write.number(7, (i+1), p.packge_by_date_print);
sheet.addcell(item_code);
sheet.addcell(plu);
sheet.addcell(commodity);
sheet.addcell(ingredient);
sheet.addcell(special);
sheet.addcell(use_by_date);
sheet.addcell(use_by_date_print);
sheet.addcell(packge_by_date_print);
}
book.write();
book.close();
} catch (exception e) {
e.printstacktrace();;
}
}
}
// txt文件model类
class txtfile {
int item_code;
int plu;
string commodity;
string ingredient;
string special;
int use_by_date;
int use_by_date_print;
int packge_by_date_print;
public txtfile(int item_code, int plu, string commodity, string ingredient, string special,int use_by_date, int use_by_date_print, int packge_by_date_print) {
this.item_code = item_code;
this.plu = plu;
this.commodity = commodity;
this.ingredient = ingredient;
this.special = special;
this.use_by_date = use_by_date;
this.use_by_date_print = use_by_date_print;
this.packge_by_date_print = packge_by_date_print;
}
} 以上这篇java实现将txt文件转成xls文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持CodeAE代码之家。
原文链接:https://blog.csdn.net/omelon1/article/details/78783851
|