评论

收藏

[Java] Java实现将txt文件转成xls文件的方法

编程语言 编程语言 发布于:2021-10-08 11:54 | 阅读数:563 | 评论:0

今天小编就为大家分享一篇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

关注下面的标签,发现更多相似文章