Nifi 无法使用 POI API 将 CSV 转换为 Excel

2023-12-23

我想使用 groovy 脚本 + POI API 将 csv 流文件内容转换为 XLS 文件

我正在使用 ivy 来获取 POI 依赖项,看起来效果很好。

请在下面找到更多详细信息:

这是我的 Nifi 流程:

这是我的脚本

@Grapes(@Grab(group='org.apache.poi', module='poi-ooxml', version='3.9'))
import org.apache.poi.ss.usermodel.*
import org.apache.poi.hssf.usermodel.*
import org.apache.poi.xssf.usermodel.*
import org.apache.poi.ss.util.*
import org.apache.poi.ss.usermodel.*
import org.apache.poi.hssf.extractor.*
import java.nio.charset.*
import java.io.*
import org.apache.commons.io.IOUtils

def flowFile = session.get()
def date = new Date()

if(!flowFile) return

flowFile = session.write(flowFile, {inputStream, outputStream ->
try {
    
Workbook wb = WorkbookFactory.create(inputStream,);
Sheet mySheet = wb.getSheetAt(0);


def record = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
outputStream.write(record.getBytes(StandardCharsets.UTF_8))

wb.close();

} catch(e) {
 log.error("Error during processing", e)
 session.transfer(flowFile, REL_FAILURE)
}
} as StreamCallback)


def filename = flowFile.getAttribute('filename')+'.xlsx'
flowFile = session.putAttribute(flowFile, 'filename', filename) 

session.transfer(flowFile, REL_SUCCESS)

I get this error enter image description here

对这个错误有什么想法吗?

编辑: 我改变了我的脚本,但仍然有同样的错误:

@Grapes(@Grab(group='org.apache.poi', module='poi-ooxml', version='3.9'))
import com.opencsv.CSVReader
@Grapes(@Grab(group='com.opencsv', module='opencsv', version='4.2'))
import org.apache.poi.ss.usermodel.*
import org.apache.poi.hssf.usermodel.*
import org.apache.poi.xssf.usermodel.*
import org.apache.poi.ss.util.*
import org.apache.poi.ss.usermodel.*
import org.apache.poi.hssf.extractor.*
import java.nio.charset.*
import java.io.*
import org.apache.commons.io.IOUtils

def flowFile = session.get()
def date = new Date()

if(!flowFile) return

flowFile = session.write(flowFile, {inputStream, outputStream ->
try {
def nextLine = ''
reader = new CSVReader(new FileReader(csvFilePath), FILE_DELIMITER);

  Workbook wb = WorkbookFactory.create(inputStream,);
 Sheet sheet1 = wb.createSheet("Feuille");

// workBook = new SXSSFWorkbook();
//sheet = (SXSSFSheet) workBook.createSheet('Sheet');

int rowNum = 0;
while((nextLine = reader.readNext()) != null) {
Row currentRow = sheet1.createRow(rowNum++);
for(int i=0; i < nextLine.length; i++) {
if(NumberUtils.isDigits(nextLine[i])) {
currentRow.createCell(i).setCellValue(Integer.parseInt(nextLine[i]));
} else if (NumberUtils.isNumber(nextLine[i])) {
currentRow.createCell(i).setCellValue(Double.parseDouble(nextLine[i]));
} else {
currentRow.createCell(i).setCellValue(nextLine[i]);
}
}
}

fileOutputStream = new FileOutputStream(generatedXlsFilePath.trim());
wb.write(fileOutputStream);

wb.close();
fileOutputStream.close();
reader.close();
outputStream.close();

} catch(e) {
session.transfer(flowFile, REL_FAILURE)
}
} as StreamCallback)

def filename = flowFile.getAttribute('filename')+'.xlsx'
flowFile = session.putAttribute(flowFile, 'filename', filename)

session.transfer(flowFile, REL_SUCCESS)

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nifi 无法使用 POI API 将 CSV 转换为 Excel 的相关文章

随机推荐

  • 如何在 Midnight Commander 中使用 panelize?我想知道,因为这是对选定文件和目录进行递归 chmod 的一种方法

    我知道我可以使用 chmod 和高级 chmod 但他们没有为我提供一种方法递归地更改文件和文件夹的权限 Panelize 似乎能够做到这一点 但是 如果我使用 Ctrl t 选择文件然后选择 panelize 我似乎没有得到任何结果 我不
  • F# 记录与 .net 结构

    f 记录与 net 结构相同吗 我看到人们谈论 f 结构 他们使用这个术语可以与 F 记录互换吗 像FSharp 运行我的算法比 Python 慢 https stackoverflow com questions 5850243 fsha
  • 如何在 Java 中更改客户端 TLS 首选项?

    我正在尝试向 Java 中的端点发出 POST 请求 当我尝试发送请求时 出现以下错误 Caused by javax net ssl SSLHandshakeException The server selected protocol v
  • 让 Eclipse 使用 src/test/resources 而不是 src/main/resources

    我正在 Eclipse 中编写一个小型 Maven 应用程序 我将一些属性文件和应用程序上下文存储在目录 src main resources 中 我现在想让 Eclipse 使用 src test resources 目录中的属性 所以当
  • 在三元条件下抛出新的异常[重复]

    这个问题在这里已经有答案了 我有这行代码 List
  • C# 十进制的类型后缀

    我不知道我想要实现的目标的正确措辞是什么 因此它可能已经发布在网上 如果是的话请善待 好吧 基本上我有这个方法 public static T IsNull
  • Docker-compose 在运行时使用 NGINX 扩展 Jetty

    我是码头工人的新手 我已经完成了一些教程来创建 docker compose 文件来创建 3 个 Jetty 1 个 NGINX 和 1 个 MySQL NGINX 充当具有循环机制的 LB 它按预期工作良好 如果我扩展我的jetty实例
  • Java NIO:IOException:损坏的管道是什么意思? [复制]

    这个问题在这里已经有答案了 对于我的一些 Java NIO 连接 当我有SocketChannel write ByteBuffer 调用 它会抛出一个IOException 管道破损 是什么导致 管道破裂 更重要的是 是否有可能从该状态恢
  • iBeacons:如果应用程序在后台,locationManager:didEnterRegion:仅在锁屏显示时调用

    我正在开发一个监视 iBeacon 区域的 iOS 应用程序 当应用程序在后台运行时 我希望它在遇到特定的 iBeacon 区域时发送本地通知 一切工作正常 除了一件事 locationManager didEnterRegion 显然不会
  • 绘制植物雌性和雄性性相持续时间

    我很难弄清楚如何我们可以创建一个折线图 其中 Y 轴和 X 轴上都有单个植物一条连续的线分为植物各自的开放期 性期和枯萎期 我有大约 60 株植物 每株都有 5 到 15 朵花 以及它们各自的开放日期 进入雄性阶段的日期 进入雌性阶段的日期
  • 配置 log4j 在运行时记录到自定义文件

    任何人都可以指导我如何配置 log4j 以记录到我在运行时指定的特定文件 日志文件的名称和路径是在运行时生成的 应用程序必须记录到该特定文件 通常 log4j properties 文件中的文件附加器条目指向应用程序将使用的日志文件 但是在
  • 快速且Python式地确定字符串是否为回文的方法

    编辑 正如有人指出我不正确地使用了回文概念 现在我已经使用正确的函数进行了编辑 我还在第一个和第三个示例中做了一些优化 其中 for 语句一直运行到到达字符串的一半 我为检查字符串是否为回文的方法编写了三个不同版本的代码 该方法作为类 st
  • 如何使用 Tesseract-android-Tools

    我有 tesseract android tools 1 00 请帮助我使用 TessBaseAPI 接口 我只想将一个 jpg 图像传递给一个 Android 应用程序 该应用程序将一些文本作为图像的一部分 然后通过这个超立方体引擎我想将
  • Firefox 无法正确渲染 svg

    我在 Firefox 中遇到了这个问题 或者可能是我使用了错误的东西 但我使用的是这样的 svg 图像 img src image svg alt some image 浏览器将它们呈现如下 我可以让他们像 png它工作得很好 但我需要它们
  • PHP字符串计算[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我的问题是 在 PHP 中如何从字符
  • System.InvalidOperationException:异步操作尚未完成

    安装导致 Ml net 异常的管道 这Fit不是一个等待的事情 我很困惑为什么会发生这种情况 任何帮助都是值得赞赏的 var model pipeline Fit dataView 堆栈跟踪 在 System Threading Chann
  • 启动时自动运行 EFI 应用程序

    I can 构建并手动执行 http sourceforge net apps mediawiki tianocore index php title Getting Started Writing Simple ApplicationUE
  • Python:返回完整单词而不仅仅是字符串的特定部分(正则表达式)

    我最近刚刚开始学习 Python 并且已经 深入 到了正则表达式 我的任务看起来相当简单 我只需要编写一个从字符串返回某些单词的正则表达式 规则如下 单词只能包含一组元音 换句话说 它是一个不完美但简单的正则表达式 旨在从文本中返回一个音节
  • 获取Python中类的类路径或名称空间,即使它是嵌套的

    我目前正在用 Python 编写一个序列化模块 可以序列化用户定义的类 为了做到这一点 我需要获取对象的完整名称空间并将其写入文件 然后我可以使用该字符串重新创建该对象 例如 假设我们在名为的文件中有以下类结构A py class B cl
  • Nifi 无法使用 POI API 将 CSV 转换为 Excel

    我想使用 groovy 脚本 POI API 将 csv 流文件内容转换为 XLS 文件 我正在使用 ivy 来获取 POI 依赖项 看起来效果很好 请在下面找到更多详细信息 这是我的 Nifi 流程 这是我的脚本 Grapes Grab