我收到以下错误
线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / xmlbeans / XmlObject 在OrderBook.WriteToExcelSheet.CreateOutPutFile(WriteToExcelSheet.java:20) 在OrderBook.MainMethod.main(MainMethod.java:71)
我在线查找了此错误的原因,但无法找到原因。
我已经包含以下jar文件
poi-3.9-20121203.jar,
poi-excelant-3.9-20121203.jar,
poi-examples-3.9-20121203.jar,
poi-ooxml-3.9-20121203.jar,
poi-ooxml-schemas-3.9-20121203.jar,
poi-scratchpad-3.9-20121203.jar
代码:
public class WriteToExcelSheet {
public static Map < Integer, Object[] > data = new TreeMap < Integer, Object[] > ();
public static void CreateOutPutFile() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Orderbook Stats");
//This data needs to be written (Object[])
//Iterate over data and write to sheet
Set < Integer > keyset = data.keySet()
int rownum = 0;
for (Integer key: keyset) {
Row row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj: objArr) {
Cell cell = row.createCell(cellnum++);
if (obj instanceof String) cell.setCellValue((String) obj);
else if (obj instanceof Integer) cell.setCellValue((Integer) obj);
}
}
try {
//Write the workbook in file system
System.out.println("OutPutStats.xlsx writing..............................");
FileOutputStream out = new FileOutputStream(new File("FileLocation/o.xlxs"));
workbook.write(out);
out.close();
System.out.println("OutPutStats.xlsx written successfully on disk.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:78)
你必须再加一个罐子。
xmlbeans-2.3.0.jar
添加此内容并尝试。
注意:只有.xlsx格式的文件才需要,而不仅仅是.xls格式。
答案 1 :(得分:3)
你必须再包含两个jar文件。
xmlbeans-2.3.0.jar和dom4j-1.6.1.jar 添加尝试它将起作用。
注意:只有.xlsx格式的文件才需要,而不仅仅是.xlt格式。
答案 2 :(得分:1)
尝试使用.xlsx后缀翻译Excel文件时,需要添加其他jar,xmlbeansxxx.jar。 xxxx 是版本,例如xmlbeans-2.3.0.jar
答案 3 :(得分:1)
对于你添加xmlbeans-2.3.0.jar并且它无法正常工作的所有内容,你必须在添加jar之后使用HSSFWorkbook而不是XSSFWorkbook。例如;
Workbook workbook = new HSSFWorkbook();
Sheet listSheet = workbook.createSheet("Kişi Listesi");
int rowIndex = 0;
for (KayitParam kp : kayitList) {
Row row = listSheet.createRow(rowIndex++);
int cellIndex = 0;
row.createCell(cellIndex++).setCellValue(kp.getAd());
row.createCell(cellIndex++).setCellValue(kp.getSoyad());
row.createCell(cellIndex++).setCellValue(kp.getEposta());
row.createCell(cellIndex++).setCellValue(kp.getCinsiyet());
row.createCell(cellIndex++).setCellValue(kp.getDogumtarihi());
row.createCell(cellIndex++).setCellValue(kp.getTahsil());
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);
AMedia amedia = new AMedia("Kisiler.xls", "xls",
"application/file", baos.toByteArray());
Filedownload.save(amedia);
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
答案 4 :(得分:0)
您需要包含xmlbeans-xxx.jar,如果您已经下载了POI二进制zip,您将获得ooxml-lib文件夹中的xmlbeans-xxx.jar(例如:\ poi-3.11 \ ooxml-lib)
此jar用于XML绑定,适用于.xlsx文件。
答案 5 :(得分:0)
我遇到了类似的情况,因此我替换了所有外部jar文件(DbContext
),并确保您添加了lib和 List<DataGridFilterInfo> filterInfoList = new List<DataGridFilterInfo>();
filterInfoList.Add(new DataGridFilterInfo() { FilterOperation = DataGridFilterOperation.Equal, FilterType = DataGridFilterType.CheckBox, Value = true });
filterState = new DataGridFilterState();
filterState.FilterInfo = filterInfoList;
grid.FilterBy(grid.Columns["checkboxColumn"], filterState);
文件夹中存在的其他poi-bin-3.17-20170915
文件。
希望这会有所帮助!!!:)
答案 6 :(得分:0)
我正在使用 talend V7.3.1,我的 poi 版本为“4.1.0”,并且从依赖项列表中包含 xml-beans 并没有解决我的问题(即:2.3.0 和 2.6.0)。
It was fixed by downloading the jar "xmlbeans-3.0.1.jar" and adding it to the project
答案 7 :(得分:-1)
ClassNotFoundException 在类路径中找不到类时抛出。 添加如下jar(包含XmlObject接口的定义)即可解决问题
xmlbeans-x.y.z.jar
您可以在以下链接下载最新的 xmlbeans jar 文件 https://xmlbeans.apache.org/download/index.html
如果您正在使用 apache poi 库,请确保在 lib 和 ooxml-lib 文件夹中添加 jar。