Java实现将txt文件转成xls文件

本文介绍了如何使用Java和jxl.jar库将txt文件转换为xls文件。jxl.jar是处理Excel表格的Java工具,支持字体、数字、日期等单元格属性设置,适用于Windows和Linux环境。
部署运行你感兴趣的模型镜像

最近项目用到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;
        }
    }

您可能感兴趣的与本文相关的镜像

Dify

Dify

AI应用
Agent编排

Dify 是一款开源的大语言模型(LLM)应用开发平台,它结合了 后端即服务(Backend as a Service) 和LLMOps 的理念,让开发者能快速、高效地构建和部署生产级的生成式AI应用。 它提供了包含模型兼容支持、Prompt 编排界面、RAG 引擎、Agent 框架、工作流编排等核心技术栈,并且提供了易用的界面和API,让技术和非技术人员都能参与到AI应用的开发过程中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值