How to handle large amount of user data input?

I am trying to do a page which requires a lot of user input (mostly text and numbers). Ideally I want to have a grid of 5 or 6 columns, and with a default of 3 rows (which can be increased or decreased by the user since can’t know how many rows are needed in advance).
The problem is on mobile, each column would have a limited width; so it doesn’t look very nice especially when users can enter many texts on a few columns. I tried with ion-textarea but it would increase the row height sometimes.

Another way I can think of to handle this is use a form, where allowing users to enter information about one item a time, so that one item can have the entire screen and each user entry can be stacked, making use of the mobile device height scrollable. Of course, users shall options to enter another item once finishing an item or submit the form.

I wonder which design is more idiomatic? Or is there any other way to handle this kind of situation?