Чтение значений от Excel File

Я хочу получить значение от 12 листов Excel. есть ли какой-либо способ, которым я получаю значения, не открывая лист Excel? Я использую vb.net. Отправьте пример кода, если существует способ считать значения, не открывая файл Excel.спасибо

5
задан reggie 22 January 2010 в 14:57
поделиться

3 ответа

Вы не можете прочитать значения, не открывая файл Excel вообще. Но вы можете прочитать значения, не открывая Excel.

Если файл сохранен в формате XML, он будет проще. Если нет, самый простой метод - все еще использовать Excel, но используйте автоматизацию Office, чтобы сделать это. Трудно состоит в том, чтобы создать файл Excel Parser - довольно сложно на не открытый формат XML Excel (Pre Office 2003) - жесткий, но все еще возможен.

Тем не менее, вполне невозможно прочитать из электронной таблицы Excel, не открывая файл вообще ..

Вот фрагмент кода, который вы можете использовать для открытия электронной таблицы из VB.Net, используя автоматизацию Office (все еще Открывает файл, полагается на DLL Excel Automation DLL, но не требует открытия Excel):

Отказ от ответственности

Следующий код не предназначен для использования, но просто это образец для руководства считывателя их собственное решение, которое должно быть тщательно проверено.

' The code below requires you to add references to Office Interop assemblies
' into your VB.NET project  (if you don't know how to do that search Google)

xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open("<YOUR EXCEL SPREADSHEET FILE HERE")
xlWorkSheet = xlWorkBook.Worksheets("sheet1")

range = xlWorkSheet.UsedRange

For rCnt = 1 To range.Rows.Count
    For cCnt = 1 To range.Columns.Count
        Obj = CType(range.Cells(rCnt, cCnt), Excel.Range)
        ' Obj.value now contains the value in the cell.. 
    Next
Next
5
ответ дан 14 December 2019 в 01:08
поделиться

Вы можете использовать ADO.NET, чтобы прочитать значения из листа Excel. Для получения дополнительной информации о строке подключения см. http://www.connectionStrings.com/excel-2007

<connectionStrings>
    <add name="Default"
         connectionString='Microsoft.ACE.OLEDB.12.0;Data Source=c:\your\folder\file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";'
         providerName="System.Data.OleDb" />
</connectionStrings>

Вы можете использовать стандарт System.data.oledb.oledbconnection для чтения значений из источника данных. Например, рассмотрим файл Excel, который имеет лист с именем пользователей , с двумя столбцами, username и возраст .

using System.Data;
using System.Data.Common;

public int UserExists(string userName, int age)
{
    var provider = ConfigurationManager.ConnectionStrings["Default"].ProviderName;
    var factory = DbProviderFactories.GetFactory(provider);

    var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;

    using (var connection = factory.CreateConnection())
    {
        connection.ConnectionString = connectionString;

        using (DbCommand command = connection.CreateCommand())
        {
            DbParameter userNameParameter = factory.CreateParameter();
            userNameParameter.ParameterName = "@UserName";
            userNameParameter.DbType = DbType.String;
            userNameParameter.Direction = ParameterDirection.Input;
            userNameParameter.IsNullable = false;
            userNameParameter.Value = userName;


            DbParameter ageParameter = factory.CreateParameter();
            ageParameter.ParameterName = "@Age";
            ageParameter.DbType = DbType.Int32;
            ageParameter.Direction = ParameterDirection.Input;
            ageParameter.IsNullable = false;
            ageParameter.Value = age;

            command.CommandText = "SELECT COUNT(*) FROM [Users$] WHERE UserName=@UserName AND Age=@Age";
            command.Parameters.Add(userNameParameter);
            command.Parameters.Add(ageParameter);
            connection.Open();

            int usersExits = (int) command.ExecuteScalar();

            return usersExits == 1;
        }
    }
}
4
ответ дан 14 December 2019 в 01:08
поделиться

Я не знаю никакого способа получить значение с электронной таблицы Excel, не открывая его, но вы можете получить доступ к электронной таблице, не установленные в офисе, если это проблема, которую вы имея. Посмотрите на использование сборок первичной взаимодействия Office (см. здесь ).

0
ответ дан 14 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: