C # Windows-Form Excel База данных Pull - PullRequest
0 голосов
/ 19 февраля 2019

Хорошо, у меня очень большой / сложный вопрос, так что терпите меня.Я пишу программное обеспечение для компании.Это в основном будет работать как графический интерфейс для их базы данных, которая находится в Excel.Я сталкиваюсь с проблемой, которую я лично не знаю, как обойти.У меня есть форма окна, в которой есть текстовые поля, которые работник будет заполнять, чтобы сформировать ежедневный отчет для компании.Я прилагаю принтер моей формы ниже.Что я запрограммировал, так это то, что когда человек вводит номер фазы, а затем выбирает шов или фланец, мне нужен код, чтобы перейти к моей электронной таблице Excel и вытянуть все швы с номерами фланцев (в зависимости от того, что было выбрано на втором этапе).поле) и поместите их либо в автозаполнение, либо в раскрывающийся список в третьем поле.В основном это будет фиктивным доказательством того, что компании делают отчеты, не допуская места для человеческих ошибок при ручном вводе.Я также приложил изображение моей базы данных Excel, чтобы вы могли увидеть, как она работает.Я был бы очень признателен, если бы кто-то мог мне помочь с этим. Форма ежедневного отчета GUI --- База данных Excel

 private void textBox2_TextChanged(object sender, EventArgs e)
    {
        string phasetocheck = textBox1.Text;
        Form1 form1 = new Form1();
        string cells = Form1.filePath;
        Excel ex = new Excel(cells, 1);
        string[,] phasenumbers = ex.ReadRange(2, 2, 57400, 4);
        int j = 0;
        List<string> list = new List<string>();


        int i = 2;

        foreach (string x in phasenumbers)
        {
            if(phasetocheck.Contains(x))
            {
                list.Add(phasenumbers[4, j]);
                j++;
            }
            i++;
        }

        string[] weldnums = list.ToArray();

        textBox2.AutoCompleteCustomSource.AddRange(weldnums);

1 Ответ

0 голосов
/ 20 февраля 2019

Вот пример использования ADO.Net для доступа к базе данных Excel.Вам необходимо иметь Access или механизм времени выполнения Access (я полагаю, что я использую MS Access Database Engine 2010 с 32-разрядной версией .Net - также можно использовать с 64-разрядной версией).

const string provider = "Microsoft.ACE.OLEDB.12.0";
const string filePath = @"C:\temp";
const string filenameTemplate = "*DataFile.xlsx";
string filename = Directory.GetFiles(filePath, filenameTemplate).First();

var cn = new OleDbConnection($"Provider={provider};Data Source={filename};Extended Properties='Excel 12.0 Xml;HDR=YES'");
cn.Open();

var cmd = new OleDbCommand();
cmd.Connection = cn;

var SheetName = "[ALL USERS WITH ACCESS$]";

cmd.CommandText = $"select * from {SheetName}";

var da = new OleDbDataAdapter(cmd);
var dt = new DataTable();

da.Fill(dt);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...