首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 讀取 Excel 數據寫入文本文件完整實現(基於 JXL)

     編輯:Java 相關知識

業務常見需求:從 Excel 導出結構化數據生成文本文件。本文提供基於 JXL 庫的完整代碼,涵蓋文件創建、流式寫入、資源關閉全流程。

一、 核心依賴

<dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
</dependency>

二、 完整工具類

public class ExcelToTxt {
    private File resultFile;
    private PrintWriter writer;

    public void createTxt(String path) throws IOException {
        resultFile = new File(path);
        resultFile.createNewFile();
        writer = new PrintWriter(new FileWriter(resultFile));
    }

    public void writeLine(List<UserInfo> data) {
        for (UserInfo info : data) {
            writer.println(info.getUserName() + " " + info.getUserPass());
        }
    }

    public void close() {
        if (writer != null) {
            writer.flush();
            writer.close();
        }
    }

    public static List<UserInfo> readExcel(String path) throws IOException, BiffException {
        List<UserInfo> list = new ArrayList<>();
        Workbook book = Workbook.getWorkbook(new File(path));
        Sheet sheet = book.getSheet(0);
        for (int i = 1; i < sheet.getRows(); i++) { // 跳過標題行
            UserInfo info = new UserInfo();
            info.setUserName(sheet.getCell(0, i).getContents());
            info.setUserPass(sheet.getCell(1, i).getContents());
            info.setTrueName(sheet.getCell(2, i).getContents());
            list.add(info);
        }
        book.close();
        return list;
    }

    public static void main(String[] args) {
        ExcelToTxt converter = new ExcelToTxt();
        converter.createTxt("C:\\output.txt");
        List<UserInfo> data = readExcel("D:\\input.xls");
        converter.writeLine(data);
        converter.close();
    }
}

class UserInfo {
    private String userName, userPass, trueName;
    // getter/setter 省略
}

三、 關鍵點與避坑指南

  • JXL 僅支援 .xls(BIFF 格式),.xlsx 請用 Apache POI。
  • 流式寫入避免大文件 OOM,PrintWriter 自帶緩衝。
  • 異常情況確保 close() 在 finally 塊調用。
  • 單元格索引:getCell(列, 行),注意行列順序。

四、 進階擴展建議

  • 支援多 Sheet、動態列映射、數據類型轉換。
  • 大文件場景改用 POI SXSSF 流式讀寫。
  • 增加進度回調、錯誤行記錄、斷點續傳能力。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved