Извлечение скаляра из файла Excel - PullRequest
2 голосов
/ 21 сентября 2011

Мне нужно заполнить часть строки скаляром, полученным из таблицы Excel: string myStr = myStr + excelResponce(myStr) ;
Однако myStr постоянно обновляется, и нет необходимости помещать данные запроса или строку в список.
Я попытался (1) адаптер odbc загрузить полный файл Excel и datarows select (), чтобы получить скаляр и (2) метод odbc open-query-close.Оба работают, но выглядят неэффективно: первый должен загружать в память весь xls с ограничением ресурсов, последний не предназначен для скаляров и страдает от того, что набор данных загружается с одной строкой данных.
Как подключиться к простой структуреданные ?Как извлечь минимальные данные наиболее эффективным способом?Спасибо всем.

1 Ответ

2 голосов
/ 21 сентября 2011

Вы должны использовать метод ExecuteScalar, а не что-нибудь еще, поэтому вы загрузите точный скаляр, а не DataSet.

вот пример, который я только что скопировал из Интернета, если вы создали диапазон с именем myRange1 в Excel, предполагая, что он содержит только 1 ячейку с целочисленным значением, вот как это получить:

using System;
using System.Windows.Forms;
using System.Data.OleDb; 

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string filename = "filename.xls";
            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + @";Extended Properties=""Excel 8.0;HDR=1;IMEX=1""";

            string sql = "SELECT * FROM myRange1"; 

            using(var conn = new OleDbConnection(connString);
            using(var cmd = new OleDbCommand(sql, conn);
            {
                conn.Open();

                Int32 myReturnScalar = Convert.ToInt32(cmd.ExecuteScalar());
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...