I tried to use Export/import feature with my component on a view
Steps to reproduce the Bug
When clicking on import I have this error
An error has occurred.
0 Class "JCB\Component\Jtax\Administrator\Helper\PhpOffice\PhpSpreadsheet\Reader\chunkReadFilter" not found
after solving it I have an issue Class "JCB\Component\Jtax\Administrator\Helper\IOFactory" not found
When clicking on export I have this error PhpOffice\PhpSpreadsheet\Document\Properties::setLastModifiedBy(): Argument #1 ($modifiedBy) must be of type string, null given, called in F:\Sites\repos\com_jtax\admin\src\Helper\JtaxHelper.php on line 226
Which Joomla version are you compiling in?
6.0.1
Which PHP version are you compiling in?
v8.3
Which Joomla versions are you targeting?
v5
Which PHP version are you targeting?
8.3
Which Web server is JCB running on?
Apache 2.4
Which Relational Database is JCB running on?
MySql 8.9
Which OS is JCB running on?
Linux
Which JCB version are you using?
6.1.4-beta2
Where in JCB did this issue occur?
Dashboard(admin_view)
On which browsers did you encounter the issue?
Firefox
Additional Comments
For chunkReadFilter" not found the issue can be solved by commenting the lines with chunkReadFile //$chunkFilter = new PhpOffice\PhpSpreadsheet\Reader\chunkReadFilter(2,1);
and //$excelReader->setReadFilter($chunkFilter);
Fir IoFactory not found I solved it by adding use lines at the head of my file use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\Alignment;
export issue can be solved by changing line if (!$modified) { //JLT $modified = Factory::getDate()->format('jS_F_Y');//$user->name; }
### What Happened?
I tried to use Export/import feature with my component on a view
### Steps to reproduce the Bug
When clicking on import I have this error
```
An error has occurred.
0 Class "JCB\Component\Jtax\Administrator\Helper\PhpOffice\PhpSpreadsheet\Reader\chunkReadFilter" not found
```
after solving it I have an issue
`Class "JCB\Component\Jtax\Administrator\Helper\IOFactory" not found `
When clicking on export I have this error
`PhpOffice\PhpSpreadsheet\Document\Properties::setLastModifiedBy(): Argument #1 ($modifiedBy) must be of type string, null given, called in F:\Sites\repos\com_jtax\admin\src\Helper\JtaxHelper.php on line 226`
### Which Joomla version are you compiling in?
6.0.1
### Which PHP version are you compiling in?
v8.3
### Which Joomla versions are you targeting?
v5
### Which PHP version are you targeting?
8.3
### Which Web server is JCB running on?
Apache 2.4
### Which Relational Database is JCB running on?
MySql 8.9
### Which OS is JCB running on?
Linux
### Which JCB version are you using?
6.1.4-beta2
### Where in JCB did this issue occur?
Dashboard(admin_view)
### On which browsers did you encounter the issue?
Firefox
### Additional Comments
For chunkReadFilter" not found the issue can be solved by commenting the lines with chunkReadFile
` //$chunkFilter = new PhpOffice\PhpSpreadsheet\Reader\chunkReadFilter(2,1);`
and
` //$excelReader->setReadFilter($chunkFilter);`
Fir IoFactory not found I solved it by adding use lines at the head of my file
`use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
`
export issue can be solved by changing line
` if (!$modified)
{ //JLT
$modified = Factory::getDate()->format('jS_F_Y');//$user->name;
}
`
JLTRY
added the Bug label 2025-12-16 08:59:55 +00:00
Hi @JLTRY
The Import feature was removed when we moved to Joomla 4.
There should be no Import/Export functionality in JCB v6.
Is this project perhaps an older Joomla 3 system that was migrated forward?
Could you please share a bit more detail - ideally with screenshots - showing where you are encountering this?
Also, to clarify: are you referring to the Import feature in the Demo Component or the Packaging engine of JCB?
Thanks for helping us narrow this down.
Hi @JLTRY
The **Import** feature was removed when we moved to **Joomla 4**.
There should be **no Import/Export functionality in JCB v6**.
Is this project perhaps an **older Joomla 3 system that was migrated forward**?
Could you please share a bit more detail - ideally with **screenshots** - showing where you are encountering this?
Also, to clarify: are you referring to the **Import feature in the Demo Component** or the [Packaging engine](https://github.com/orgs/joomengine/discussions/995) of JCB?
Thanks for helping us narrow this down.
I started with JBC with Joomla 5.0
It is just the feature of importing/exporting data from my admin view
Configuration
Buttons in backend
I started with JBC with Joomla 5.0
It is just the feature of importing/exporting data from my admin view
Configuration

Buttons in backend



@JLTRY This issue appears to be related to the custom buttons added to your administrator view and is not caused by Joomla Component Builder itself.
Unfortunately, problems arising from custom user-written code are very difficult for us to debug or reproduce. I'd be happy to assist if this were a JCB-related bug, but we're unable to provide support for issues originating from custom code outside of JCB's scope.
@JLTRY This issue appears to be related to the custom buttons added to your administrator view and is not caused by Joomla Component Builder itself.
Unfortunately, problems arising from custom user-written code are very difficult for us to debug or reproduce. I'd be happy to assist if this were a JCB-related bug, but we're unable to provide support for issues originating from custom code outside of JCB's scope.
Hi @Lemuel
The issue can be reproduced with Demo component
For import part :
add custom button
do not add any additional code
compile the Demo component and install it
Go to looks admin view of the Demo component
click on import and select an xls file
You have then an error message
Hi @Lemuel
The issue can be reproduced with Demo component
For import part :
add custom button 
do not add any additional code
compile the Demo component and install it
Go to looks admin view of the Demo component

click on import and select an xls file
You have then an error message

Thank you for the detailed report and for taking the time to investigate and document the issues you encountered.
Before addressing the specific errors, it's important to clarify a fundamental point about the current import/export architecture in JCB, because this directly explains why what you are attempting does not work as expected.
About the Current Import Engine
The current import system is not a simple "button-based upload -> immediate database insert" workflow like older JCB versions or many traditional Joomla components.
Instead, the implementation you are trying to use is the persistent import engine, which is:
Queue-based
State-aware
File-tracked
CLI-driven
Designed for long-running and resumable imports
This approach is intentionally more advanced and enterprise-grade.
What this means in practice
The import process does not execute immediately when a file is uploaded. Instead:
Files are uploaded and stored
Metadata is persisted
Import jobs are queued
Processing happens later via CLI commands
Progress, failures, and state are tracked persistently
This design allows:
Safe handling of large datasets
Resume/retry support
Auditability
Background processing (cron / scheduler)
Decoupling UI from heavy processing
This is exactly how the demo component works, and it is tested continuously through our automated test suite. From our side, the demo component imports and exports correctly every day.
Why Adding Toolbar Buttons Is Not Sufficient
Simply adding toolbar buttons and calling import/export logic will not work with the current system.
A working setup requires multiple coordinated parts, including:
Additional database tables
Supporting views
Controller adaptations
Queue logic
CLI processing
File and file-type integration
Proper class extension in the correct locations
Without these pieces, the workflow breaks - which is exactly what you are seeing.
About the "Missing Class" Errors
chunkReadFilter not found
IOFactory not found
These errors are not bugs in JCB.
They occur because the PhpSpreadsheet library is not linked into your component.
In the demo component, this is handled explicitly via Component Files & Folders:
Go to Components -> Your Component
Click the "Files & Folders" icon (the suitcase icon)
In the Advanced tab, you'll see a linked path similar to:
JPATH_LIBRARIES/phpspreadsheet/vendor
This ensures that:
PhpSpreadsheet is shipped with the component
Namespaces resolve correctly
Classes like IOFactory and chunkReadFilter are available
Unless you add this linkage, those classes will not be available, and PHP will correctly throw a "class not found" error.
Manually commenting out code or adding use statements only masks the real issue - the library itself is missing.
About the Export Error (setLastModifiedBy)
You correctly identified that this error occurs because a null value is being passed where a string is required.
Your workaround is valid and will prevent the fatal error.
This part of the export flow is currently being refined as part of ongoing refactoring.
Documentation & Expectations
You are correct that documentation for this system is still limited.
This import engine is:
New
Actively being refactored
Intentionally complex (by design)
For now, the demo component is the canonical reference.
Anyone attempting to use this system needs to:
Read the demo code
Follow the namespaces
Trace the class flow
Understand how the queue, files, and CLI pieces fit together
What We Are Working On Next
We fully recognize that this solution is overkill for many use cases.
That is why we are currently working on:
A simpler import path
Immediate, direct table imports
No queue
No persistent state
Minimal setup
This will better serve users who just want:
"Upload a spreadsheet -> insert rows -> done"
Once that simplified approach is ready, it will be released with proper documentation and examples.
Summary
The demo component works as intended
The current import engine is advanced by design
Missing classes are due to missing file/library linkage
Toolbar-only implementations will not work
A simpler import/export system is actively being developed
We appreciate your patience while this refactoring is underway, and we strongly encourage you to either:
Fully replicate the demo component's structure, or
Wait for the upcoming simplified import solution
Thank you for your understanding and for taking the time to report your findings - they are valuable and appreciated.
Thank you for the detailed report and for taking the time to investigate and document the issues you encountered.
Before addressing the specific errors, it's important to clarify a fundamental point about the **current import/export architecture in JCB**, because this directly explains why what you are attempting does not work as expected.
---
## About the Current Import Engine
The **current import system is not a simple "button-based upload -> immediate database insert" workflow** like older JCB versions or many traditional Joomla components.
Instead, the implementation you are trying to use is the **persistent import engine**, which is:
* **Queue-based**
* **State-aware**
* **File-tracked**
* **CLI-driven**
* **Designed for long-running and resumable imports**
This approach is intentionally more advanced and enterprise-grade.
### What this means in practice
The import process **does not execute immediately** when a file is uploaded. Instead:
1. Files are uploaded and stored
2. Metadata is persisted
3. Import jobs are queued
4. Processing happens later via **CLI commands**
5. Progress, failures, and state are tracked persistently
This design allows:
* Safe handling of large datasets
* Resume/retry support
* Auditability
* Background processing (cron / scheduler)
* Decoupling UI from heavy processing
This is **exactly how the demo component works**, and it is tested continuously through our automated test suite. From our side, the demo component imports and exports correctly every day.
---
## Why Adding Toolbar Buttons Is Not Sufficient
Simply adding toolbar buttons and calling import/export logic **will not work** with the current system.
A working setup requires **multiple coordinated parts**, including:
* Additional database tables
* Supporting views
* Controller adaptations
* Queue logic
* CLI processing
* File and file-type integration
* Proper class extension in the correct locations
Without these pieces, the workflow breaks - which is exactly what you are seeing.
---
## About the "Missing Class" Errors
### `chunkReadFilter` not found
### `IOFactory` not found
These errors are **not bugs** in JCB.
They occur because the **PhpSpreadsheet library is not linked into your component**.
In the demo component, this is handled explicitly via **Component Files & Folders**:
* Go to *Components -> Your Component*
* Click the **"Files & Folders"** icon (the suitcase icon)
* In the **Advanced** tab, you'll see a linked path similar to:
```
JPATH_LIBRARIES/phpspreadsheet/vendor
```
This ensures that:
* PhpSpreadsheet is shipped with the component
* Namespaces resolve correctly
* Classes like `IOFactory` and `chunkReadFilter` are available
Unless you add this linkage, those classes **will not be available**, and PHP will correctly throw a "class not found" error.
Manually commenting out code or adding `use` statements only masks the real issue - the library itself is missing.
---
## About the Export Error (`setLastModifiedBy`)
You correctly identified that this error occurs because a `null` value is being passed where a string is required.
Your workaround is valid and will prevent the fatal error.
This part of the export flow is currently being refined as part of ongoing refactoring.
---
## Documentation & Expectations
You are correct that **documentation for this system is still limited**.
This import engine is:
* New
* Actively being refactored
* Intentionally complex (by design)
For now, the **demo component is the canonical reference**.
Anyone attempting to use this system needs to:
* Read the demo code
* Follow the namespaces
* Trace the class flow
* Understand how the queue, files, and CLI pieces fit together
---
## What We Are Working On Next
We fully recognize that this solution is **overkill for many use cases**.
That is why we are currently working on:
* A **simpler import path**
* Immediate, direct table imports
* No queue
* No persistent state
* Minimal setup
This will better serve users who just want:
> "Upload a spreadsheet -> insert rows -> done"
Once that simplified approach is ready, it will be released with proper documentation and examples.
---
## Summary
* The demo component **works as intended**
* The current import engine is **advanced by design**
* Missing classes are due to **missing file/library linkage**
* Toolbar-only implementations will not work
* A simpler import/export system is actively being developed
We appreciate your patience while this refactoring is underway, and we strongly encourage you to either:
* Fully replicate the demo component's structure, **or**
* Wait for the upcoming simplified import solution
Thank you for your understanding and for taking the time to report your findings - they are valuable and appreciated.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What Happened?
I tried to use Export/import feature with my component on a view
Steps to reproduce the Bug
When clicking on import I have this error
after solving it I have an issue
Class "JCB\Component\Jtax\Administrator\Helper\IOFactory" not foundWhen clicking on export I have this error
PhpOffice\PhpSpreadsheet\Document\Properties::setLastModifiedBy(): Argument #1 ($modifiedBy) must be of type string, null given, called in F:\Sites\repos\com_jtax\admin\src\Helper\JtaxHelper.php on line 226Which Joomla version are you compiling in?
6.0.1
Which PHP version are you compiling in?
v8.3
Which Joomla versions are you targeting?
v5
Which PHP version are you targeting?
8.3
Which Web server is JCB running on?
Apache 2.4
Which Relational Database is JCB running on?
MySql 8.9
Which OS is JCB running on?
Linux
Which JCB version are you using?
6.1.4-beta2
Where in JCB did this issue occur?
Dashboard(admin_view)
On which browsers did you encounter the issue?
Firefox
Additional Comments
For chunkReadFilter" not found the issue can be solved by commenting the lines with chunkReadFile
//$chunkFilter = new PhpOffice\PhpSpreadsheet\Reader\chunkReadFilter(2,1);and
//$excelReader->setReadFilter($chunkFilter);Fir IoFactory not found I solved it by adding use lines at the head of my file
use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\Alignment;export issue can be solved by changing line
if (!$modified) { //JLT $modified = Factory::getDate()->format('jS_F_Y');//$user->name; }Hi @JLTRY
The Import feature was removed when we moved to Joomla 4.
There should be no Import/Export functionality in JCB v6.
Is this project perhaps an older Joomla 3 system that was migrated forward?
Could you please share a bit more detail - ideally with screenshots - showing where you are encountering this?
Also, to clarify: are you referring to the Import feature in the Demo Component or the Packaging engine of JCB?
Thanks for helping us narrow this down.
I started with JBC with Joomla 5.0



It is just the feature of importing/exporting data from my admin view
Configuration
Buttons in backend
@JLTRY This issue appears to be related to the custom buttons added to your administrator view and is not caused by Joomla Component Builder itself.
Unfortunately, problems arising from custom user-written code are very difficult for us to debug or reproduce. I'd be happy to assist if this were a JCB-related bug, but we're unable to provide support for issues originating from custom code outside of JCB's scope.
Hi @Lemuel


The issue can be reproduced with Demo component
For import part :
add custom button
do not add any additional code
compile the Demo component and install it
Go to looks admin view of the Demo component
click on import and select an xls file
You have then an error message
Thank you for the detailed report and for taking the time to investigate and document the issues you encountered.
Before addressing the specific errors, it's important to clarify a fundamental point about the current import/export architecture in JCB, because this directly explains why what you are attempting does not work as expected.
About the Current Import Engine
The current import system is not a simple "button-based upload -> immediate database insert" workflow like older JCB versions or many traditional Joomla components.
Instead, the implementation you are trying to use is the persistent import engine, which is:
This approach is intentionally more advanced and enterprise-grade.
What this means in practice
The import process does not execute immediately when a file is uploaded. Instead:
This design allows:
This is exactly how the demo component works, and it is tested continuously through our automated test suite. From our side, the demo component imports and exports correctly every day.
Why Adding Toolbar Buttons Is Not Sufficient
Simply adding toolbar buttons and calling import/export logic will not work with the current system.
A working setup requires multiple coordinated parts, including:
Without these pieces, the workflow breaks - which is exactly what you are seeing.
About the "Missing Class" Errors
chunkReadFilternot foundIOFactorynot foundThese errors are not bugs in JCB.
They occur because the PhpSpreadsheet library is not linked into your component.
In the demo component, this is handled explicitly via Component Files & Folders:
Go to Components -> Your Component
Click the "Files & Folders" icon (the suitcase icon)
In the Advanced tab, you'll see a linked path similar to:
This ensures that:
IOFactoryandchunkReadFilterare availableUnless you add this linkage, those classes will not be available, and PHP will correctly throw a "class not found" error.
Manually commenting out code or adding
usestatements only masks the real issue - the library itself is missing.About the Export Error (
setLastModifiedBy)You correctly identified that this error occurs because a
nullvalue is being passed where a string is required.Your workaround is valid and will prevent the fatal error.
This part of the export flow is currently being refined as part of ongoing refactoring.
Documentation & Expectations
You are correct that documentation for this system is still limited.
This import engine is:
For now, the demo component is the canonical reference.
Anyone attempting to use this system needs to:
What We Are Working On Next
We fully recognize that this solution is overkill for many use cases.
That is why we are currently working on:
This will better serve users who just want:
Once that simplified approach is ready, it will be released with proper documentation and examples.
Summary
We appreciate your patience while this refactoring is underway, and we strongly encourage you to either:
Thank you for your understanding and for taking the time to report your findings - they are valuable and appreciated.
@Llewellyn Thank you for your answer.
With my workaround I am able to import/Export for my component
I will wait for future simpler methods