当前位置: 移动技术网 > IT编程>开发语言>Java > Java实现将txt文件转成xls文件的方法

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

最近项目用到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文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网