gpt4 book ai didi

java - 使用 POI 事件模型将工作表写入文本文件

转载 作者:行者123 更新时间:2023-12-02 06:32:59 25 4
gpt4 key购买 nike

我正在使用XLSX2CSV从工作簿中解析大工作表的示例。由于我只需要输出特定工作表的数据,因此我在 process 方法中添加了一个 if 语句来测试特定工作表。当条件满足时,我继续该过程。

   public void process()
throws IOException, OpenXML4JException, ParserConfigurationException, SAXException {

ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage);
XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
StylesTable styles = xssfReader.getStylesTable();
XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData();

while (iter.hasNext()) {
InputStream stream = iter.next();
String sheetName = iter.getSheetName();

if (sheetName.equals("SHEET1")||sheetName.equals("SHEET2")||sheetName.equals("SHEET3")||sheetName.equals("SHEET4")||sheetName.equals("SHEET5")){

processSheet(styles, strings, stream);

try {

System.setOut(new PrintStream(
new FileOutputStream("C:\\Users\\edennis.AD\\Desktop\\test\\"+sheetName+".txt")));

} catch (Exception e) {
e.printStackTrace();
}


stream.close();


}
}
}

但我需要输出文本文件,但不知道该怎么做。我尝试使用 System.set() 方法将 system.out 中的所有内容输出到文本,但这不起作用,我只是得到空白文件。

最佳答案

将评论提升为答案:

XLSX2CSV在演示 main 方法内部,靠近末尾处有一个关键行:

XLSX2CSV xlsx2csv = new XLSX2CSV(p, System.out, minColumns);

创建新的 XLSX2CSV 对象时,我们传入一个 PrintStream 对象,该对象用于输出文本。正如构造函数中所解释的:

/**
* Creates a new XLSX -> CSV converter
*
* @param pkg The XLSX package to process
* @param output The PrintStream to output the CSV to
* @param minColumns The minimum number of columns to output, or -1 for no minimum
*/
public XLSX2CSV(OPCPackage pkg, PrintStream output, int minColumns) {

因此,如果您传入基于文件的 PrintStream 而不是 System.out,则会将 CSV 写入该文件

关于java - 使用 POI 事件模型将工作表写入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19909070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com