{"id":16863,"date":"2022-01-13T17:06:53","date_gmt":"2022-01-13T16:06:53","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/"},"modified":"2025-10-24T09:38:38","modified_gmt":"2025-10-24T07:38:38","slug":"installing-the-cdata-odbc-drivers-for-excel","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/","title":{"rendered":"Installing the cdata ODBC drivers for Excel"},"content":{"rendered":"<p>This article is part of a series that includes SQLite, Postgresql, Firebird, Oracle RDBMS, Microsoft SQL Server, HSQLDB, MongoDB, and MariaDB. The goal is to set up a self-standing environment for testing an ODBC extension for gawk presented here <em>to be completed<\/em>. Refer to <a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-driver-manager-with-sqlite-on-linux\">SQLite<\/a> for installing the required ODBC Driver Manager.<br \/>\nThe test system is a debian v11 (bullseye).<br \/>\nLike MongoDB, Excel is not a relational data source, but the ODBC API will allow to access its data using SQL statements. The idea is to access spreadsheet files as if they were relational databases, each sheet being a table, each line a table&#8217;s row and each column a table&#8217;s column. The first row of a sheet contains the column headers. This is quite self-evident; see the screen copy down below.<br \/>\nAs the Excel sheet is the database, there is no server software to install but only the ODBC drivers.<br \/>\nLet&#8217;s create a spreadsheet with the data sample from the site. We will just query an existing database, e.g. the PostgreSQL one if the instructions <a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-postgresql\">here<\/a> were applied, and extract the content of the tables, as shown below:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n$ psql sampledb\n\\a\nOutput format is unaligned.\nsampledb=&gt; select * from regions;\nregion_id|region_name\n1|Europe\n2|Americas\n3|Asia\n4|Middle East and Africa\n(4 rows)\n\nsampledb=&gt; select * from countries;\ncountry_id|country_name|region_id\nAR|Argentina|2\nAU|Australia|3\nBE|Belgium|1\nBR|Brazil|2\n...\n(29 rows)\n<\/pre>\n<p>and so on with the other tables locations, departments, jobs, employees and dependents.<br \/>\nWe will simply create one spreadsheet using LibreOffice Calc or Excel, create one tab per table with the table name as its name, paste the data from the above output with the column headers as the first line. Be sure to select the &#8216;|&#8217; character as the column separator and remove spurious lines and columns. This step is manual and a bit tedious, but it&#8217;ll only take a few minutes.<br \/>\nThe image below shows how the spreadsheet may look like with some data in it:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png\" alt=\"\" width=\"300\" height=\"276\" class=\"alignnone size-medium wp-image-52589\" \/><\/a><br \/>\nIf using isql to extract the data into a tabular format, spurious blanks are added, e.g.:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n$ isql -v mysqldb -v debian debian\nSQL&gt; select * from regions;\n+------------+--------------------------+\n| region_id  | region_name              |\n+------------+--------------------------+\n| 1          | Europe                   |\n| 2          | Americas                 |\n| 3          | Asia                     |\n| 4          | Middle East and Africa   |\n+------------+--------------------------+\nSQLRowCount returns 4\n\nSQL&gt; select * from countries;\n+-----------+-----------------------------------------+------------+\n| country_id| country_name                            | region_id  |\n+-----------+-----------------------------------------+------------+\n| AR        | Argentina                               | 2          |\n| AU        | Australia                               | 3          |\n| BE        | Belgium                                 | 1          |\n...\n| ZM        | Zambia                                  | 4          |\n| ZW        | Zimbabwe                                | 4          |\n+-----------+-----------------------------------------+------------+\nSQLRowCount returns 29\n29 rows fetched\n<\/pre>\n<p>This leading and trailing blanks must be removed as they don&#8217;t belong to the data but were added by isql to format the table so that it displays nicely. The following gawk script can be used to this effect:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\nfor t in {regions,countries,locations,departments,jobs,employees,dependents}; do echo \"select * from $t;\" | isql -v mysqldb debian debian | gawk -v table_name=$t 'BEGIN {\n   print \"table\", table_name\n   do {\n      getline\n   } while (0 == index($0, \"SQL&gt;\"))\n   n = split ($0, t, \"+\")\n   delete t[1]\n   FIELDWIDTHS = \"1\"\n   for (i = 2; i &lt; n; i++)\n      FIELDWIDTHS = FIELDWIDTHS sprintf(&quot; %d 1&quot;, length(t[i]))\n   FIELDWIDTHS = FIELDWIDTHS &quot; 1&quot;\n   bHeader = 0\n}\n{\n   bHeader++\n   if (index($0, &quot;+-&quot;))\n      if (2 == bHeader)\n         next\n      else\n         exit\n   for (i = 2; i &lt; NF; i += 2) {gsub(\/(^ +)|( +$)\/, \"\", $i); printf(\"%s|\", $i)}\n   printf \"\\n\"\n}\nEND {\n   printf \"\\n\"\n}';\ndone\nOutput:\ntable regions\nregion_id|region_name|\n1|Europe|\n2|Americas|\n3|Asia|\n4|Middle East and Africa|\n\ntable countries\ncountry_id|country_name|region_id|\nAR|Argentina|2|\n...\netc...\n<\/pre>\n<p>If no prior database with the sample data is available, just save the data from <a href=\"https:\/\/www.sqltutorial.org\/wp-content\/uploads\/2020\/04\/postgresql-data.txt\">here<\/a> into a text file, say populate-tables.sql, save the following gawk script sql2flat.awk:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: []\">\n# convert sql statements into csv;\n# INSERT INTO regions(region_id,region_name) VALUES (1,'Europe');\n# becomes\n#    1|Europe\n# INSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (1400,'2014 Jabberwocky Rd','26192','Southlake','Texas','US');\n# becomes\n#    1400|2014 Jabberwocky Rd|26192|Southlake|Texas|US\n# sql comes from here for example: https:\/\/www.sqltutorial.org\/wp-content\/uploads\/2020\/04\/postgresql-data.txt;\n# Usage:\n#   gawk -v sep=separator -f sql2csv.awk data.sql\n# Example:\n#   gawk -v sep=\"|\" -f sql2csv.awk populate-tables.sql | tee populate-tables.csv\n{\n   if (match($0, \/INSERT INTO ([^)]+)\\(.+\\) VALUES \\((.+)\\)\/, m)) {\n      if (m[1] != ex_table) {\n         ex_table = m[1]\n         print \"# tab\", m[1] \":\"\n      }\n      gsub(\/'|\"\/, \"\", m[2])\n      n = split(m[2], data, \",\")\n      for (i = 1; i  1 &le; n; i++)\n         printf(\"%s%s\", i &gt; 1 ? sep : \"\", data[i])\n      printf \"\\n\"\n   }\n}\n<\/pre>\n<p>and run it on the data file:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: []\">\ngawk -v sep=\"|\" -f sql2flat.awk populate-tables.sql\n<\/pre>\n<p>Snippet of output:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: []\">\n# tab regions:\n1|Europe\n2|Americas\n3|Asia\n4|Middle East and Africa\n# tab countries:\nAR|Argentina|2\nAU|Australia|3\nBE|Belgium|1\nBR|Brazil|2\n...\n# tab locations:\n1400|2014 Jabberwocky Rd|26192|Southlake|Texas|US\n1500|2011 Interiors Blvd|99236|South San Francisco|California|US\n...\n# tab jobs:\n1|Public Accountant|4200.00|9000.00\n2|Accounting Manager|8200.00|16000.00\n3|Administration Assistant|3000.00|6000.00\n...\n# tab departments:\n1|Administration|1700\n2|Marketing|1800\n...\n# tab employees:\n100|Steven|King|steven.king@sqltutorial.org|515.123.4567|1987-06-17|4|24000.00|NULL|9\n101|Neena|Kochhar|neena.kochhar@sqltutorial.org|515.123.4568|1989-09-21|5|17000.00|100|9\n102|Lex|De Haan|lex.de haan@sqltutorial.org|515.123.4569|1993-01-13|5|17000.00|100|9\n...\n# tab dependents:\n1|Penelope|Gietz|Child|206\n2|Nick|Higgins|Child|205\n3|Ed|Whalen|Child|200\n...\n<\/pre>\n<p>Next, copy and paste the above output into the respective sheet&#8217;s tabs.<br \/>\nAfter the edition is completed, save the file as SampleWorkbook.xlsx (for compatibility, select the output format as Excel file if using LibreOffice Calc) and keep a copy of it somewhere in case it becomes corrupted during the tests.<br \/>\nWe will use the commercial ODBC drivers provided by cdata (https:\/\/www.cdata.com\/odbc\/); other vendors are e.g. Easysoft (https:\/\/www.easysoft.com\/developer\/interfaces\/odbc\/index.html) and Devart (https:\/\/www.devart.com\/odbc\/).<br \/>\nDownload the drivers from https:\/\/www.cdata.com\/drivers\/excel\/odbc\/ by following the instructions on the screen, and install them as root:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n# dpkg -i ExcelODBCDriverforUnix.deb \n<\/pre>\n<p>Run the licensing script and follow the on-screen instructions:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n# cd \/opt\/cdata\/cdata-odbc-driver-for-excel\/bin\/\n# .\/install-license.x64 \n\n*************************************************************************\nPlease provide your name and email to install a trial license.\n\nTo install a full version license pass your product key as a parameter.\nFor instance: .\/install-license MY_PRODUCT_KEY\n\nPlease refer to the documentation for additional details.\n*************************************************************************\n\nName: debian\nEmail: ...\nInstalling TRIAL license...\nDownloading license data...\nVerifying license data...\nLicense installation succeeded.\n<\/pre>\n<p>Check the system-wide installed drivers:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n# odbcinst -q -d\n...\n[CData ODBC Driver for Excel]\n\n# odbcinst -q -d -n \"CData ODBC Driver for Excel\"\n[CData ODBC Driver for Excel]\nDescription=CData ODBC Driver for Excel 2021\nDriver=\/opt\/cdata\/cdata-odbc-driver-for-excel\/lib\/libexcelodbc.x64.so\nUsageCount=1\nDriver64=\/opt\/cdata\/cdata-odbc-driver-for-excel\/lib\/libexcelodbc.x64.so\n<\/pre>\n<p>Check the system-wide DSN in \/etc\/odbc.ini:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n# odbcinst -q -s\n...\n[CData-Excel-Source]\n\n# odbcinst -q -s -n \"CData-Excel-Source\"\n[CData Excel Source]\nDriver=CData ODBC Driver for Excel\nAWS Access Key=\nAWS Region=NORTHERNVIRGINIA\nAWS Role ARN=\nAWS Secret Key=\nAzure Access Key=\nAzure Shared Access Signature=\nAzure Storage Account=\nAzure Tenant=\nMFA Serial Number=\nMFA Token=\nPassword=\nShare Point Edition=SharePointOnline\nSSL Mode=AUTOMATIC\nUser=\n<\/pre>\n<p>Copy the newly inserted DSN into debian&#8217;s own ~\/.odbc.ini file and append the URI setting as follows:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n$ vi ~\/.odbc.ini\n...\n[CData-Excel-Source]\nDriver=CData ODBC Driver for Excel\nAWS Access Key=\nAWS Region=NORTHERNVIRGINIA\nAWS Role ARN=\nAWS Secret Key=\nAzure Access Key=\nAzure Shared Access Signature=\nAzure Storage Account=\nAzure Tenant=\nMFA Serial Number=\nMFA Token=\nPassword=\nShare Point Edition=SharePointOnline\nSSL Mode=AUTOMATIC\nUser=\nURI=\/home\/debian\/odbc4gawk\/SampleWorkbook.xlsx\n<\/pre>\n<p>As debian, check its DSN so far:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1,15]\">\n$ odbcinst -q -s\n[mysqlitedb]\n[mysqldb]\n[myfbdb]\n[myfbdb_Devart]\n[mypostgresqldb]\n[OracleODBC-21]\n[mymssqlserverdb]\n[myhsqldb]\n[mymongodb]\n[DEVART_MONGODB]\n[DEVART_FIREBIRD]\n[CData-Excel-Source]\n\n$ odbcinst -q -s -n [CData-Excel-Source]\n[CData-Excel-Source]\nDriver=CData ODBC Driver for Excel\nAWS Access Key=\nAWS Region=NORTHERNVIRGINIA\nAWS Role ARN=\nAWS Secret Key=\nAzure Access Key=\nAzure Shared Access Signature=\nAzure Storage Account=\nAzure Tenant=\nMFA Serial Number=\nMFA Token=\nPassword=\nShare Point Edition=SharePointOnline\nSSL Mode=AUTOMATIC\nUser=\nURI=\/media\/sf_customers\/dbi\/odbc4gawk\/SampleWorkbook.xlsx\n<\/pre>\n<p>Try a connection to the spreadsheet via the ODBC Driver Manager&#8217;s isql tool:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n# isql -v \"CData Excel Source\"\n+---------------------------------------+\n| Connected!                            |\n|                                       |\n| sql-statement                         |\n| help [tablename]                      |\n| quit                                  |\n|                                       |\n+---------------------------------------+\nSQL&gt; help\n+-----------+-------------+-------------------------------------------------------------------------+\n| TABLE_CAT | TABLE_SCHEM | TABLE_NAME    | TABLE_TYPE | REMARKS                                    |\n+-----------+-------------+---------------+------------+--------------------------------------------+\n| CData     | Excel       | regions       | TABLE      | Retrieve data from the \"regions\" sheet.    |\n| CData     | Excel       | countries     | TABLE      | Retrieve data from the \"countries\" sheet.  |\n| CData     | Excel       | locations     | TABLE      | Retrieve data from the \"locations\" sheet.  |\n| CData     | Excel       | department    | TABLE      | Retrieve data from the \"department\" sheet. |\n| CData     | Excel       | employees     | TABLE      | Retrieve data from the \"employees\" sheet.  |\n| CData     | Excel       | dependent     | TABLE      | Retrieve data from the \"dependent\" sheet.  |\n| CData     | Excel       | jobs          | TABLE      | Retrieve data from the \"jobs\" sheet.       |\n+-----------+-------------+---------------+------------+--------------------------------------------+\nSQLRowCount returns -1\n7 rows fetched\n<\/pre>\n<p>Interesting how the driver presents the data dictionary.<br \/>\nRun the test query:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\nSQL&gt; SELECT c.country_name, c.country_id, l.country_id, l.street_address, l.city FROM countries c LEFT JOIN locations l ON l.country_id = c.country_id WHERE c.country_id IN ('US', 'UK', 'CN');\nOutput:\n+----------------------------+-------------+------------+-------------------------------------------+----------------------+\n| country_name               | country_id  | country_id | street_address                            | city                 |\n+----------------------------+-------------+------------+-------------------------------------------+----------------------+\n| United Kingdom             | UK          | UK         | 8204 Arthur St                            | London               |\n| United Kingdom             | UK          | UK         | Magdalen Centre, The Oxford Science Park  | Oxford               |\n| United States of America   | US          | US         | 2014 Jabberwocky Rd                       | Southlake            |\n| United States of America   | US          | US         | 2011 Interiors Blvd                       | South San Francisco  |\n| United States of America   | US          | US         | 2004 Charade Rd                           | Seattle              |\n| China                      | CN          |            |                                           |                      |\n+----------------------------+-------------+------------+-------------------------------------------+----------------------+\nSQLRowCount returns -1\n6 rows fetched\n<\/pre>\n<p>The join was performed as expected.<br \/>\nLet\u2019s now see how the driver behaves when used with python the module pyodbc:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1]\">\n$ python3\nimport pyodbc Python 3.9.2 (default, Feb 28 2021, 17:03:44) \n[GCC 10.2.1 20210110] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\nimport pyodbc\n\n# connect using the DSN;\ncnxn = pyodbc.connect(DSN='Cdata-Excel-Source')\n# or:\n# connect directly using the DRIVER definition, no DSN;\ncnxn = pyodbc.connect('DRIVER={CData ODBC Driver for Excel};URI=\/media\/sf_customers\/dbi\/odbc4gawk\/SampleWorkbook.xlsx')\n\ncursor = cnxn.cursor()      \ncursor.execute(\"\"\"SELECT\n               c.country_name,\n               c.country_id,\n               l.country_id,\n               l.street_address,\n               l.city\n       FROM\n               countries c\n       LEFT JOIN locations l ON l.country_id = c.country_id\n       WHERE\n               c.country_id IN ('US', 'UK', 'CN')\"\"\") \n\nrow = cursor.fetchone() \nwhile row:\n     print (row) \n     row = cursor.fetchone()\n\nOutput:\n('United Kingdom', 'UK', 'UK', '8204 Arthur St', 'London')\n('United Kingdom', 'UK', 'UK', 'Magdalen Centre - The Oxford Science Park', 'Oxford')\n('United States of America', 'US', 'US', '2014 Jabberwocky Rd', 'Southlake')\n('United States of America', 'US', 'US', '2011 Interiors Blvd', 'South San Francisco')\n('United States of America', 'US', 'US', '2004 Charade Rd', 'Seattle')\n('China', 'CN', None, None, None)\n<\/pre>\n<p>Excel spreadsheets are now accessible via ODBC under the debian account.<br \/>\nAdmittedly, Excel sheets are no natural and reliable data sources for too many reasons to mention here (but they have other advantages) but it is quite impressive and almost magical to query them using SQL vs. some low-level cell-oriented API !<br \/>\nInstructions for the other data sources can be accessed through the following links:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-driver-manager-with-sqlite-on-linux\">SQLite<\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-firebird\">Firebird<\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-hsqldb\">HSQLDB<\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-mariadb\">MariaDB<\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-postgresql\">PostgreSQL<\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-oracle-rdbms\">Oracle<\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-microsoft-sqlserver-for-linux\">Microsoft SQLServer for Linux<\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-odbc-drivers-for-mongodb\">MongoDB<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article is part of a series that includes SQLite, Postgresql, Firebird, Oracle RDBMS, Microsoft SQL Server, HSQLDB, MongoDB, and MariaDB. The goal is to set up a self-standing environment for testing an ODBC extension for gawk presented here to be completed. Refer to SQLite for installing the required ODBC Driver Manager. The test system [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":16864,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[],"type_dbi":[],"class_list":["post-16863","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Installing the cdata ODBC drivers for Excel - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Installing the cdata ODBC drivers for Excel\" \/>\n<meta property=\"og:description\" content=\"This article is part of a series that includes SQLite, Postgresql, Firebird, Oracle RDBMS, Microsoft SQL Server, HSQLDB, MongoDB, and MariaDB. The goal is to set up a self-standing environment for testing an ODBC extension for gawk presented here to be completed. Refer to SQLite for installing the required ODBC Driver Manager. The test system [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-13T16:06:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-24T07:38:38+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png\" \/>\n\t<meta property=\"og:image:width\" content=\"971\" \/>\n\t<meta property=\"og:image:height\" content=\"893\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"Installing the cdata ODBC drivers for Excel\",\"datePublished\":\"2022-01-13T16:06:53+00:00\",\"dateModified\":\"2025-10-24T07:38:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/\"},\"wordCount\":677,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/SampleWorkbook.png\",\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/\",\"name\":\"Installing the cdata ODBC drivers for Excel - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/SampleWorkbook.png\",\"datePublished\":\"2022-01-13T16:06:53+00:00\",\"dateModified\":\"2025-10-24T07:38:38+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/SampleWorkbook.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/SampleWorkbook.png\",\"width\":971,\"height\":893},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/installing-the-cdata-odbc-drivers-for-excel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Installing the cdata ODBC drivers for Excel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/middleware-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Installing the cdata ODBC drivers for Excel - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/","og_locale":"en_US","og_type":"article","og_title":"Installing the cdata ODBC drivers for Excel","og_description":"This article is part of a series that includes SQLite, Postgresql, Firebird, Oracle RDBMS, Microsoft SQL Server, HSQLDB, MongoDB, and MariaDB. The goal is to set up a self-standing environment for testing an ODBC extension for gawk presented here to be completed. Refer to SQLite for installing the required ODBC Driver Manager. The test system [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/","og_site_name":"dbi Blog","article_published_time":"2022-01-13T16:06:53+00:00","article_modified_time":"2025-10-24T07:38:38+00:00","og_image":[{"width":971,"height":893,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png","type":"image\/png"}],"author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"Installing the cdata ODBC drivers for Excel","datePublished":"2022-01-13T16:06:53+00:00","dateModified":"2025-10-24T07:38:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/"},"wordCount":677,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png","articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/","url":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/","name":"Installing the cdata ODBC drivers for Excel - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png","datePublished":"2022-01-13T16:06:53+00:00","dateModified":"2025-10-24T07:38:38+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/SampleWorkbook.png","width":971,"height":893},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/installing-the-cdata-odbc-drivers-for-excel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Installing the cdata ODBC drivers for Excel"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=16863"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16863\/revisions"}],"predecessor-version":[{"id":41195,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16863\/revisions\/41195"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/16864"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=16863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=16863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=16863"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=16863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}