Importing Excel Numbers to Text

  • Thread starter Thread starter Matt
  • Start date Start date
M

Matt

I am importing a spreadsheet from Excel into Access. My
problem is, one column in Excel has a bunch of 4-digit ID
numbers in them. When I do the importation, if one of
the numbers has a leading zero (ex: 0839), there is an
import error on it. I have all of my Excel data set to
Text format, and the tables I am importing to in Access
set to Text format, but it is still making this error. I
think it is still "thinking" its a number. Anyone know a
solution for this?

Thanks!
-Matt
 
One possible workaround:

Do a find-replace on the column in Excel, replacing all
the zeroes with the letter A (or another letter). Do an
opposite find-replace after the import to Access.

KW
 
Here is my "standard" post on the topic - it should help.


Since Excel is not a database, using "mixed" data types in a column causes a
problem when Access has to "guess" which one to use. Access examines the
first 15 rows (or so) and makes a guess. If you want to "force" Access to
guess a text data type then make the first entry in that column a text
value. The reason you get errors is that the first 15 rows are all numeric
and then the text data shows up after Access has already guessed the data
type to be Numeric.

The way to make a text value in your data of numbers is to include a
character!
e.g. 123A

========================================================
Other good advice from John Nurick:
The Access routine that imports Excel data doesn't allow direct control
over the types of the fields it creates, and often runs into trouble
with Excel columns that contain a mix of numeric and text values.

You can work round this in any of the following ways:

1) create the table yourself with the field types you need, then import
the spreadsheet data. The field names in the table must exactly match
the column headings in Excel.

2) make sure that at least one row near the top of the Excel table
contains values that can only be interpreted as the data types you need
(e.g. text that cannot be interpreted as a number if you want the column
to become a text field). Sometimes the simplest way to do this is to
insert a first row of "dummy" data into Excel just for this, and then
delete it from the Access table once the data has been imported.

3) Access assigns field types on the basis of the data it finds in the
first dozen or so rows of the spreadsheet table. It pays no attention to
cell formats. Sometimes a useful trick is to put an apostrophe ' in
front of numeric values in the cells (e.g. '999): this forces Excel and
Access to treat them as text, but the apostrophe is not displayed in
Excel or imported into Access.

(Just to make things more confusing, the Access applies different rules
when you're linking Excel data rather than importing it. Simplifying
somewhat: when importing, any text value in the first few rows will
cause a field to be imported as text. When linking, any *numeric* value
in the first few rows will cause a field to be linked as numeric even if
all the other values are non-numeric.)

3) Write your own import code using Automation to get the values direct
from the worksheet cells and recordset operations or queries to append
them into your table.
 
Adding a new row at top of spreadsheet with sample values
in each cell is supposed to fix this (put text in the 4
digit ID field)
 
This should be considered a major flaw. Without this inside knowledge, a user would take the time to format the xls columns to match the table column data types, and still Access would take control and change the formatting when importing, or not import the data. It's very counter-intuitive, and requires a manual adjustment. Something the Access team could consider would be a tool, option that would allow the user to turn this unwanted behavior off.
 
Back
Top