Skip to content

导出结果集.xlsx报错 #1931

Description

@15219150444

Chat2DB Edition

Chat2DB Community

Chat2DB Version

Chat2DB Community5.3.0

Deployment

Desktop

Operating System

Windows

Operating System Version

windows 11

Database and Version

Mysql 8.0.37

Problem Summary

Image

The maximum length of cell contents (text) is 32767 characters IllegalArgumentException
The maximum length of cell contents (text) is 32767 characters IllegalArgumentException java.lang.IllegalArgumentException

{"getApplicationMessage":{"env":"community","versions":"5.3.0","buildTime":"2026-07-17 17:54:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"},"errorCode":"The maximum length of cell contents (text) is 32767 characters IllegalArgumentException","errorMessage":"java.lang.IllegalArgumentException","errorDetail":"java.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32767 characters\r\n\tat org.apache.poi.ss.usermodel.CellBase.checkLength(CellBase.java:309)\r\n\tat org.apache.poi.ss.usermodel.CellBase.setCellValue(CellBase.java:290)\r\n\tat com.alibaba.excel.write.executor.AbstractExcelWriteExecutor.converterAndSet(AbstractExcelWriteExecutor.java:86)\r\n\tat com.alibaba.excel.write.executor.ExcelWriteAddExecutor.doAddBasicTypeToExcel(ExcelWriteAddExecutor.java:135)\r\n\tat com.alibaba.excel.write.executor.ExcelWriteAddExecutor.addBasicTypeToExcel(ExcelWriteAddExecutor.java:100)\r\n\tat com.alibaba.excel.write.executor.ExcelWriteAddExecutor.addOneRowOfDataToExcel(ExcelWriteAddExecutor.java:77)\r\n\tat com.alibaba.excel.write.executor.ExcelWriteAddExecutor.add(ExcelWriteAddExecutor.java:58)\r\n\tat com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:59)\r\n\tat com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:73)\r\n\tat com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:50)\r\n\tat ai.chat2db.community.domain.core.impl.db.DbDmlExportServiceImpl.lambda$exportExcel$5(DbDmlExportServiceImpl.java:152)\r\n\tat ai.chat2db.spi.DefaultSQLExecutor.writeExportResultSet(DefaultSQLExecutor.java:200)\r\n\tat ai.chat2db.spi.DefaultSQLExecutor.execute(DefaultSQLExecutor.java:159)\r\n\tat ai.chat2db.community.domain.core.impl.db.DbDmlExportServiceImpl.exportExcel(DbDmlExportServiceImpl.java:144)\r\n\tat ai.chat2db.community.domain.core.impl.db.DbDmlExportServiceImpl.export(DbDmlExportServiceImpl.java:83)\r\n\tat ai.chat2db.community.web.api.controller.DbDmlExportController.export(DbDmlExportController.java:50)\r\n\tat jdk.internal.reflect.GeneratedMethodAccessor270.invoke(Unknown Source)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n\tat org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\r\n\tat ai.chat2db.community.web.api.aspect.connection.ConnectionInfoHandler.connectionInfoHandler(ConnectionInfoHandler.java:65)\r\n\tat jdk.internal.reflect.GeneratedMethodAccessor193.invoke(Unknown Source)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:649)\r\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:631)\r\n\tat org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)\r\n\tat org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)\r\n\tat ai.chat2db.community.web.api.aspect.controller.ControllerHandler.handle(ControllerHandler.java:30)\r\n\tat jdk.internal.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:649)\r\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:631)\r\n\tat org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)\r\n\tat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)\r\n\tat org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728)\r\n\tat ai.chat2db.community.web.api.controller.DbDmlExportController$$SpringCGLIB$$0.export()\r\n\tat jdk.internal.reflect.GeneratedMethodAccessor269.invoke(Unknown Source)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat ai.chat2db.community.web.api.config.console.ConsoleHelper.doController(ConsoleHelper.java:276)\r\n\tat ai.chat2db.community.web.api.config.console.WebJcefServerBridge.doController(WebJcefServerBridge.java:36)\r\n\tat ai.chat2db.community.jcef.frame.MainJFrame$6.lambda$onQuery$0(MainJFrame.java:653)\r\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)\r\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\r\n\tat java.base/java.lang.Thread.run(Thread.java:840)\r\n","solutionLink":"https://github.com/chat2db/Chat2DB/wiki/Chat2DB","requestParams":"{\"actionType\":\"execute\",\"headers\":{\"Accept-Language\":\"zh-CN\",\"Time-Zone\":\"Etc/GMT-8\"},\"uuid\":\"63639480-ce77-438d-92c8-932e3d3809ed\",\"requestUrl\":\"/api/rdb/dml/export\",\"method\":\"post\",\"message\":{\"databaseType\":\"MYSQL\",\"dataSourceId\":1784691216416999,\"databaseName\":\"id_wook\",\"sql\":\"select \r\ndetails\r\nfrom goods\n LIMIT 1000","resultSetId":1,"originalSql":"select \r\ndetails\r\nfrom goods","exportType":"EXCEL","exportSize":"ALL"}}"}

导出报错,字段类型为text类型

Steps to Reproduce

导出结果集.xlsx

Expected Behavior

导出结果集.xlsx

Actual Behavior

导出结果集.xlsx

Logs

Screenshots or Additional Context

No response

Impact

Blocks startup or a core workflow

Workaround

No known workaround

Submission Checklist

  • I reproduced this on the selected Chat2DB edition.
  • I searched existing issues for duplicates.
  • I removed credentials and private data.

Maintainer Ready Contract

  • User outcome: Exporting an XLSX result set with a text value longer than Excel's 32,767-character cell limit completes without aborting the whole export.
  • In scope:
    • Enforce the XLSX cell limit in the Community export path before EasyExcel writes a value.
    • Keep values at or below the limit byte-for-byte unchanged.
    • Truncate only over-limit XLSX text cells to 32,767 characters.
    • Add focused regression coverage for the boundary and an over-limit value.
  • Non-goals:
    • Changing CSV or INSERT export behavior.
    • Splitting one database value across several spreadsheet cells.
    • Changing SQL execution, pagination, or database value conversion.
  • Suggested code or documentation area:
    • chat2db-community-server/chat2db-community-domain/chat2db-community-domain-core/src/main/java/ai/chat2db/community/domain/core/impl/db/DbDmlExportServiceImpl.java
    • A focused test beside the domain-core export tests.
  • Acceptance criteria:
    • XLSX export does not throw IllegalArgumentException for a 32,768-character text value.
    • The resulting cell contains exactly 32,767 characters.
    • A 32,767-character value and normal cells are unchanged.
    • CSV export retains the full text value.
  • Exact verification:
    • mvn -B -f chat2db-community-server/pom.xml -pl chat2db-community-domain/chat2db-community-domain-core -am -DskipTests=false -Dtest=DbDmlExportServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test
    • mvn -B test -Dmaven.test.skip=false -DskipTests=false -f chat2db-community-server/pom.xml
  • Dependencies or required environment: JDK 17. The regression test must use an in-memory or mocked result set and must not require a private database.
  • Review maintainer: @openai0229
  • First substantive review target: 5 business days
  • Milestone: Not release-committed

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions