Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApachePOI删除大型xls/xlsx文件中的行_Java_Excel_Apache Poi_Xlsx_Xls - Fatal编程技术网

Java 如何使用ApachePOI删除大型xls/xlsx文件中的行

Java 如何使用ApachePOI删除大型xls/xlsx文件中的行,java,excel,apache-poi,xlsx,xls,Java,Excel,Apache Poi,Xlsx,Xls,我试图删除xlsx文件第二页和第三页的第一行,但是对于大文件,我会遇到Java热空间异常或GC开销 我正在使用ApachePOI,我不知道如何使用XSSF和SAX 我的实际代码如下: public boolean deleteRow(String sheetName、String excelPath、int rowNo)引发异常{ XSSF工作簿=空; XSSFSheet=null; 试一试{ 文件文件=新文件(excelPath); 工作簿=新XSSF工作簿(文件); sheet=工作簿.ge

我试图删除xlsx文件第二页和第三页的第一行,但是对于大文件,我会遇到Java热空间异常或GC开销

我正在使用ApachePOI,我不知道如何使用XSSF和SAX

我的实际代码如下:

public boolean deleteRow(String sheetName、String excelPath、int rowNo)引发异常{
XSSF工作簿=空;
XSSFSheet=null;
试一试{
文件文件=新文件(excelPath);
工作簿=新XSSF工作簿(文件);
sheet=工作簿.getSheet(sheetName);
如果(工作表==null){
返回false;
}
int lastRowNum=sheet.getLastRowNum();
如果(rowNo>=0&&rowNo
事情就是这样

Cleaning up unclosed ZipFile for archive C:\temp\Report_XXXX.xlsx
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[ID-DESKTOP-HPUQAQ7-1568621807670-2-1]
        at org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1842)
        at org.apache.camel.impl.DefaultExchange.setException(DefaultExchange.java:385)
        at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:275)
        at org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:198)
        at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:53)
        at org.apache.camel.component.bean.BeanProducer.process(BeanProducer.java:41)
        at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
        at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:76)
        at org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:186)
        at org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:86)
        at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:541)
        at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:506)
        at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:369)
        at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:506)
        at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:229)
        at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:144)
        at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:161)
        at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:168)
        at it.carrefour.faat.RunFaatBatch.main(RunFaatBatch.java:26)
        ... 8 more
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.util.Arrays.copyOfRange(Arrays.java:3664)
        at java.lang.String.<init>(String.java:207)
        at com.sun.org.apache.xerces.internal.xni.XMLString.toString(XMLString.java:188)
        at com.sun.org.apache.xerces.internal.util.XMLAttributesImpl.getValue(XMLAttributesImpl.java:524)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$AttributesProxy.getValue(AbstractSAXParser.java:2321)
        at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale.java:3198)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
        at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3414)
        at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1272)
        at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1259)
        at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
        at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorksheetDocument$Factory.parse(Unknown Source)
        at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:228)
        at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:220)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.parseSheet(XSSFWorkbook.java:452)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:417)
        at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:184)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:286)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:323)
        at it.carrefour.faat.jasperreport.JasperReportFill.deleteRow(JasperReportFill.java:106)
        at it.carrefour.faat.jasperreport.JasperReportFill.generateReport(JasperReportFill.java:84)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
清理归档文件C:\temp\Report_XXXX.xlsx的未关闭ZipFile
线程“main”java.lang.reflect.InvocationTargetException中出现异常
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
位于org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
位于org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
位于org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
原因:org.apache.camel.CamelExecutionException:在exchange上执行时发生异常:exchange[ID-DESKTOP-HPUQAQ7-1568621807670-2-1]
位于org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1842)
位于org.apache.camel.impl.DefaultExchange.setException(DefaultExchange.java:385)
在org.apache.camel.component.bean.MethodInfo$1.procedure上(MethodInfo.java:275)
位于org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:198)
位于org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:53)
位于org.apache.camel.component.bean.BeanProducer.process(BeanProducer.java:41)
位于org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
位于org.apache.camel.processor.RedeliveryRorHandler.process(RedeliveryRorHandler.java:548)
位于org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
位于org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
位于org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:76)
位于org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:186)
位于org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:86)
位于org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:541)
在org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:506)
位于org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:369)
位于org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:506)
位于org.apache.camel.impl.ProducerCache.send(ProducerCache.java:229)
位于org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:144)
位于org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:161)
位于org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:168)
at it.carrefour.faat.RunFaatBatch.main(RunFaatBatch.java:26)
... 8个以上
原因:java.lang.OutOfMemoryError:超出GC开销限制
位于java.util.Arrays.copyOfRange(Arrays.java:3664)
位于java.lang.String。(String.java:207)
位于com.sun.org.apache.xerces.internal.xni.XMLString.toString(XMLString.java:188)
在com.sun.org.apache.xerces.internal.util.XMLAttributesImpl.getValue上(XMLAttributesImpl.java:524)
位于com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$AttributeProxy.getValue(AbstractSAXParser.java:2321)
位于org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale.java:3198)
位于com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
位于com.sun.org.apache.xerces.internal.parsers.XML11Config