Excel Tools

Overview

Provides several smart services and functions for handling data in Excel and CSV formats.

Key Features & Functionality

Smart Services included are:

  • Import CSV to Database
  • Import Excel to Database
  • Merge Excel Documents
  • Load CSV to Database
  • Convert HTML to CSV
  • Convert Excel to CSV
  • Encrypt Excel with Password

Functions included are:

  • Read Excel File Paged
  • Read Excel Cell by Name
  • Read Excel Cell by Number
  • Read Excel By Headers
  • Query Appian Logs
  • Export Datasubset to Base64
  • Validate Document Headers
  • Get Workbook and Sheet Metadata

Anonymous
  • Hello everyone,

    I updated the plugin from version 2.6.3 to version 2.9.0. I noticed that the readexcelsheet() function is no longer present and the new functions in the plugin are not working properly. Could you provide me with instructions on how to replace the readexcelsheet function using the functions of the updated plugin?
    I look forward to your feedback.

  • Post Appian env upgrade to 25.3, "Encrypt Excel with Password" is failing, giving an error as "A folder needs to be provided for this particular configuration".
    I have checked we are passing folder id properly and its accessible. Also we have not made any change in the flow, before upgrade it was working absolutely fine.
    Appreciate your help.

  • v2.9.0 Release Notes

    • Added getworkbookandsheetmetadata function which returns metadata about the excel workbook and the sheets found in the workbook

  • Hi everyone,

    I am looking for a version of the Excel Tools plugin that is compatible with Appian 23.4. I've seen that version 1.8.3 has been mentioned in some discussions, but I can't find it on the official portal.

    Does anyone know if it is available somewhere or if there’s a way to obtain this version? Any guidance or suggestions would be greatly appreciated.

    Thank you in advance for your help!

  • what extra configurations do we need for this to work with PostgreSQL? Currently getting delimiter and other errors when using it.

  • Hi  ,

    Not able to Import the data by Import Excel to Database service with xls format.
    Can you please provide the update if smart service supporting the xls format or not? 

  • Im using the Import CSV to Database smart service, on passing the csv file which has empty values in few cells Im getting the error 'Error executing SQL'. Does the smart service not support csv files with null values for a few cells?

  • v2.8.2 Release Notes
    • Fixing bugs associated with library dependencies
  • I am trying to use the Excel to CSV converter but get an error: Convert Excel To CSVAn error occurred in executing an Activity Class.

    I specify 1 for Row number ot read from and SHete number. I specify the columns I want to read and for the Excel Document I do a todocument of a DocumentID. In the output I specify a process variable of type Document in which to store AC!CSVDocument.

    Any help would be appreciated! It looks like a similar error to the one below (both talk about InputBuilder issues), albeit for a different utility in the Plugin-in.

    2025-05-20 00:42:05,363 [ThreadPoolTaskExecutor-182065] ERROR com.appiancorp.process.workpoller.WorkItemListener - The following exception occurred while attempting to complete work item [[WorkId: 737, EngineId: execution02, Request: UnattendedJavaActivityRequest:536871033 as roderick.ross@iam-app.co by roderick.ross@iam-app.co, ProcessId: 536889035, ProcessModelId: 1110, Response: null]] - Exception: 
    javax.resource.spi.work.WorkCompletedException: java.lang.NoSuchMethodError: 'org.apache.commons.io.input.BoundedInputStream$Builder org.apache.commons.io.input.BoundedInputStream.builder()'
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:244)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    	at java.base/java.lang.Thread.run(Thread.java:840)
  • When I try to use the Excel to CSV Smart Service I get "An error occurred in executing an Activity Class.".

    I specifiy the Excel document input using a todocument of the docId that I am uploading. 

    I specify an integer for the number of columns I am reading.

    I specify 1 for the Row Number to Read from and 1 for the Sheet Number.

    In the output I save the CSV output as a process variables of Type Document.

    My std-Out.log trace includes the following.

    Any help would be appreciated.

    2025-05-20 00:42:05,363 [ThreadPoolTaskExecutor-182065] ERROR com.appiancorp.process.workpoller.WorkItemListener - The following exception occurred while attempting to complete work item [[WorkId: 737, EngineId: execution02, Request: UnattendedJavaActivityRequest:536871033 as roderick.ross@iam-app.co by roderick.ross@iam-app.co, ProcessId: 536889035, ProcessModelId: 1110, Response: null]] - Exception: 
    javax.resource.spi.work.WorkCompletedException: java.lang.NoSuchMethodError: 'org.apache.commons.io.input.BoundedInputStream$Builder org.apache.commons.io.input.BoundedInputStream.builder()'
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:244)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    	at java.base/java.lang.Thread.run(Thread.java:840)
    Caused by: java.lang.NoSuchMethodError: 'org.apache.commons.io.input.BoundedInputStream$Builder org.apache.commons.io.input.BoundedInputStream.builder()'
    	at org.apache.poi.util.IOUtils.peekFirstNBytes(IOUtils.java:153)
    	at org.apache.poi.poifs.filesystem.FileMagic.valueOf(FileMagic.java:209)
    	at org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:147)
    	at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipFile(ZipHelper.java:219)
    	at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:274)
    	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:393)
    	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:364)
    	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:223)
    	at com.github.pjfanning.xlsx.impl.StreamingWorkbookReader.init(StreamingWorkbookReader.java:141)
    	at com.github.pjfanning.xlsx.impl.StreamingWorkbookReader.init(StreamingWorkbookReader.java:107)
    	at com.github.pjfanning.xlsx.StreamingReader$Builder.open(StreamingReader.java:552)
    	at com.appiancorp.ps.exceltools.util.ExcelHelperUtils.convertExcelToCSV(ExcelHelperUtils.java:737)
    	at com.appiancorp.ps.exceltools.smartservice.ConvertExcelToCSV.run(ConvertExcelToCSV.java:57)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:129)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:54)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:129)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:123)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:30)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:123)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:110)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:23)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:89)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:72)
    	at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:143)
    	at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    	at com.appiancorp.process.engine.ActivityRequest.executeOuter(ActivityRequest.java:41)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:136)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:125)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:110)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:241)
    	... 3 more
    Exception in thread "ThreadPoolTaskExecutor-182065" java.lang.NoSuchMethodError: 'org.apache.commons.io.input.BoundedInputStream$Builder org.apache.commons.io.input.BoundedInputStream.builder()'
    	at org.apache.poi.util.IOUtils.peekFirstNBytes(IOUtils.java:153)
    	at org.apache.poi.poifs.filesystem.FileMagic.valueOf(FileMagic.java:209)
    	at org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:147)
    	at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipFile(ZipHelper.java:219)
    	at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:274)
    	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:393)
    	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:364)
    	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:223)
    	at com.github.pjfanning.xlsx.impl.StreamingWorkbookReader.init(StreamingWorkbookReader.java:141)
    	at com.github.pjfanning.xlsx.impl.StreamingWorkbookReader.init(StreamingWorkbookReader.java:107)
    	at com.github.pjfanning.xlsx.StreamingReader$Builder.open(StreamingReader.java:552)
    	at com.appiancorp.ps.exceltools.util.ExcelHelperUtils.convertExcelToCSV(ExcelHelperUtils.java:737)
    	at com.appiancorp.ps.exceltools.smartservice.ConvertExcelToCSV.run(ConvertExcelToCSV.java:57)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:129)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:54)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:129)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:123)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:30)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:123)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:110)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:23)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:89)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:72)
    	at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:143)
    	at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    	at com.appiancorp.process.engine.ActivityRequest.executeOuter(ActivityRequest.java:41)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:136)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:125)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:110)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:241)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    	at java.base/java.lang.Thread.run(Thread.java:840)
    2025-05-20 00:45:18,074 [Timer-6] INFO  com.appiancorp.cache.DatabaseAuxiliaryCache - Removing expired entries from db cache: uiStateLarge-auxiliary