首页 > 开发 > Java > 正文

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

2024-07-14 08:42:31
字体:
来源:转载
供稿:网友

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表