Spire.XLS is a professional Excel API that enables developers to create, manage, manipulate, convert and print Excel worksheets. Get free and professional technical support for Spire.XLS for .NET, Java, Android, C++, Python.

Tue Sep 22, 2020 8:50 am

javax.imageio.spi.ImageWriterSpi: Provider com.spire.ms.imagecodecs.ico.spi.IcoImageWriterSpi not found

package com.fixprice.utils.xlsx;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Date;
import java.util.Iterator;
import javax.imageio.spi.IIORegistry;
import javax.imageio.spi.IIOServiceProvider;
import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.spi.ImageWriterSpi;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import com.spire.xls.PageSetup;
import com.spire.xls.ViewMode;
import com.spire.xls.collections.WorksheetsCollection;
import com.spire.ms.imagecodecs.ico.spi.IcoImageReaderSpi;
import com.spire.ms.imagecodecs.ico.spi.IcoImageWriterSpi;
public class Document {

static {
setLogger();

testIIORegistry();

registerServiceProviders();

log("\n");

testIIORegistry();
}

private static PrintStream logger;

private Workbook workbook=new Workbook();

public Document(File file) throws Exception {

workbook.loadFromStream(new FileInputStream(file));
}

private static void setLogger() {

try {
File logFile=new File("c:/opentext/cs/support/uploadedfiles/"+(new Date().getTime())+".log");

logFile.createNewFile();

logger=new PrintStream(new FileOutputStream(logFile),true);

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

private static void log(String message) {

if (!(logger==null)) {
try {
logger.println(message);

logger.flush();

} catch (Exception e) {
}
}
}

private static void log(Throwable e) {

if (!(logger==null)) {
try {
e.printStackTrace(logger);

logger.flush();

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

private static void registerServiceProviders() {

try {
IIORegistry ioRegistry=IIORegistry.getDefaultInstance();

ioRegistry.registerServiceProvider(new IcoImageReaderSpi(),ImageReaderSpi.class);
ioRegistry.registerServiceProvider(new IcoImageWriterSpi(),ImageWriterSpi.class);

} catch (Throwable e) {
log(e);

e.printStackTrace();
}
}

@SuppressWarnings("unused")
private static void testIIORegistry() {

IIORegistry ioRegistry=IIORegistry.getDefaultInstance();

for (Iterator<Class<?>> categories=ioRegistry.getCategories();(categories.hasNext());) {
Class<?> category=categories.next();

log("Category: "+category);

System.out.println("Category: "+category);

for (Iterator<?> providers=ioRegistry.getServiceProviders(category,true);(providers.hasNext());) {
final IIOServiceProvider provider=(IIOServiceProvider) providers.next();

log("\t"+provider);

System.out.println("\t"+provider);
}
}
}

public Document setBarcode(File barcode) throws Throwable {

try {
BufferedImage image=ImageIO.read(barcode);

float scale=(100.0f/(float) image.getWidth());

WorksheetsCollection worksheets=workbook.getWorksheets();

for (int i=0,count=worksheets.getCount();(i<count);i++) {
Worksheet worksheet=worksheets.get(i);

PageSetup pageSetup=worksheet.getPageSetup();

pageSetup.setRightHeaderImage(image,scale);
pageSetup.setRightHeader("&G");

worksheet.setViewMode(ViewMode.Layout);
}

} catch (Throwable e) {
log(e);

throw e;
}

return this;
}

public void save(File file) throws Throwable {

try {
workbook.saveToStream(new FileOutputStream(file));

} catch (Throwable e) {
log(e);

throw e;
}
}
}
Last edited by BykovIgor on Tue Sep 22, 2020 10:03 am, edited 1 time in total.

BykovIgor
 
Posts: 1
Joined: Mon Jul 20, 2020 9:38 am

Tue Sep 22, 2020 9:33 am

Hello,

Thanks for your post.
Please provide more details to help us further look into your issue, such as your full test code and your input file (if any).
Thanks in advance.

Sincerely,
Rachel
E-iceblue support team
User avatar

rachel.lei
 
Posts: 1571
Joined: Tue Jul 09, 2019 2:22 am

Wed Sep 23, 2020 7:04 am

Hello,

Thanks for your more information.
I did an initial test with the latest Spire.XLS for Java Version:3.7.5 but was unable to reproduce your issue. If you are using an older version, I suggest you try again with the latest version.
If the issue still occurs, please provide the following information the help us investigate further.
1) How do you call these methods? At which line of code did the program throw the error?
2) Your source Excel file and image file. You can send them to us ([email protected]) via email.

Sincerely,
Rachel
E-iceblue support team
User avatar

rachel.lei
 
Posts: 1571
Joined: Tue Jul 09, 2019 2:22 am

Sun Sep 27, 2020 9:58 am

Hello,

Thanks for providing your files via email.
I tested your case on our evironment (Windows Server 2008 R2 Standard, jdk1.6.0_45) but did not reproduce your issue. I have sent my executable .jar file to you via email, please run it directly on your side and then let us know your test result.
Looking forward to your feedback.

Sincerely,
Rachel
E-iceblue support team
User avatar

rachel.lei
 
Posts: 1571
Joined: Tue Jul 09, 2019 2:22 am

Return to Spire.XLS

cron