Member 11889799 Ответов: 3

Проблема чтения файла XLSX, используя c#.net.


Дорогие Все,
Я использую приложение VS2010 Wpf с c#. Я читаю файл xlsx с помощью oledb-соединения, он работает нормально, но после чтения моего xlsx некоторые данные отсутствуют в наборе данных чтения.

Здесь я прикрепил свою кодировку, и у меня есть снимок экрана проблемы, но здесь нет возможности прикрепить снимок экрана.

private DataTable ReadExcel(string tabName)
       {
           DataTable retTbl = new DataTable();
           DataTable dtRead = new DataTable();
           try
           {


               System.Data.OleDb.OleDbConnection MyConnection;
               System.Data.DataSet DtSet;
               System.Data.OleDb.OleDbDataAdapter MyCommand;
               MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\csharp.net-informations.xls';Extended Properties=Excel 8.0;");
               MyConnection = conn;
               MyConnection.Open();
               MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [" + tabName + "$]", MyConnection);
               MyCommand.TableMappings.Add("Table", "TestTable");
               DtSet = new System.Data.DataSet();
               MyCommand.Fill(DtSet);
               dtRead = DtSet.Tables[0];
               MyConnection.Close();
           }

           catch (Exception ex)
           {
              MessageBox.Show(ex.ToString());
           }

           return dtRead;
       }


Экс:
Рассмотрим как столбцы Excel

'c1' c2 'c3'
---------------
'1' Тест ' 0 '
---------------
' 3 ' 1 ' 4 '
----------------

После прочтения Excel:

'c1' c2 'c3'
---------------
' 1 ' ' 0 '
---------------
' 3 ' 1 ' 4 '
----------------

см. приведенный выше пример "тест" отсутствует после чтения excel.

извините за мой английский..

Спасибо всем,
С уважением,
Картик м

Что я уже пробовал:

я попытался прочитать файл XLSX.

OriginalGriff

И что же?
В чем проблема?
Есть сообщение об ошибке? Что происходит, чего вы не ожидали, или не происходит, что вы ожидали?
И не давайте нам скриншоты: объясните, а также скопируйте и вставьте сообщения об ошибках.
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Karthik_Mahalingam

Какие данные отсутствуют, пожалуйста, будьте более конкретны.
Воспользуйся Улучшить вопрос чтобы добавить дополнительную информацию.

wilford.ramsey

Вы должны попробовать этот код, чтобы чтение файла .xlsx на языке C#.

3 Ответов

Рейтинг:
2

OriginalGriff

Быстрая мысль: вы говорите, что это файл XLSX, но я отмечаю две вещи:
1) это расширение XLS, а не XLSX - файлы XLS совсем не то же самое.
2) Вы пытаетесь прочитать его как Excel 8.0, но файлы XLSX не были представлены до версии 12.0 с Excel 2007: Microsoft Excel - Википедия, свободная энциклопедия[^]
Так что проверьте ваш файл: посмотрите, что в нем.


Рейтинг:
12

koolprasadd

похоже, что пропадают только строковые данные, чтобы перепродать это, используйте 'IMEX=1' в строке подключения, это поможет вам читать данные в строковом формате
Используйте этот метод, когда вы хотите обрабатывать все данные в файле как текст, переопределяя тип столбца excels "General", чтобы угадать, какой тип данных находится в столбце.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";

надеюсь, это поможет


Member 11889799

Привет Прасад,
Спасибо за ваш ответ, он работает нормально.Большое вам спасибо.
С уважением,
Картик

koolprasadd

Пожалуйста примите его как решение если оно разрешилось :)

Рейтинг:
1

Richard MacCutchan

Вам нужен движок Microsoft ACE engine для чтения файлов XLSX. Видеть Работа с MS Excel(xls / xlsx) Использование MDAC и Oledb[^].