欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-26 19:06:16
最近项目用到txt文件和xls文件的转换,这里记录一下具体的思路。 下面利用java代码实现txt转xls,这里要使用到jxl.jar包,这个包是通过java来操作exc...

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