Как читать из Excel и заменить определенные значения в текстовом файле. - PullRequest
0 голосов
/ 23 ноября 2018

Я новичок в c #.У меня есть только некоторые базовые знания, такие как копирование и вставка.Это означает, что я не хорош в C #.И извините за мой английский.Теперь к моей проблеме.У меня есть файл notepad.txt.Он содержит некоторые параметры со значениями, которые я получаю из другой программы.

Описание этого .txt файла: [Единица необязательна] name_of_parameter = значение

notepad.txt:

[mm]p0=45
[mm]param1=36.42199010819
[mm]param2=56
param9=56
[degrees]p3=453
[degrees]p4=134
[mm]p5=56
p6=1
p7=1

Нет никакого шанса получить другой стиль этого вывода (файл .txt).

В дополнение к этому у меня есть лист Excel со случайными строками и столбцами.В первой строке находятся name_of_parameter like -> param1, p0 .....

Поэтому я хочу заменить, например, значение param2 (в моем файле .txt) назначение param2 из моего листа Excel.Я хочу сделать это со всеми name_of_parameters, которые существуют в обоих файлах в цикле, потому что мой лист Excel имеет более одной строки.Заключение Я хочу манипулировать файлом notepad.txt.

снимок экрана

мой код C #:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Z003DUKJ\Desktop\notepad.txt");
            int stop = 1;



        }
    }
}

Если у кого-нибудь есть советы длямне спасибо

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Лучшее, что я могу себе представить, это:

  1. Прочитать все строки, как вы делали в своем коде
  2. Разобрать строки, которые содержат paramNum, для объектов и поместить их в Dictionary<string, double>.
  3. Перебирайте ключи в словаре и ищите * эту ячейку в таблице Excel, связанной с вашим ключом.
  4. Если вы нашли ячейку, содержащую параметр, прочитайте ее значение относительнонапример, его местоположение: если параметр в xlWorkSheet.Cells[row,"A"], то в вашем файле Excel значение равно xlWorkSheet.Cells[row-1, "A"].
  5. Затем замените значение ячейки значением элемента словаря

Какдля чтения файла xls:

var excelApp = new Excel.Application();
var xlWorkBook = excelApp.Workbooks.Open(fileName);
var ws = (_Worksheet)wb.Worksheets[1];

Поиск ячейки:

Excel.Range currentFind = null; 
Excel.Range firstFind = null; 

Excel.Range rangeOfParams = Application.get_Range("A1", "E5");
// You should specify all these parameters every time you call this method,
// since they can be overridden in the user interface. 
currentFind = rangeOfParams .Find("param1", missing,
    Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
    Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
    missing, missing); 

while(currentFind != null) 
{ 
    // Keep track of the first range you find. 
    if (firstFind == null)
    {
        firstFind = currentFind; 
    }

    // If you didn't move to a new range, you are done.
    else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
          == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
    {
        break;
    }

    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    currentFind.Font.Bold = true; 

    currentFind = rangeOfParams.FindNext(currentFind); 
}

Заменить значение ячейки:

ws.Cells[2, "A"] = SomeValue;
ws.Cells[2, "E"] = OtherValue;

MSDN Microsoft Excel Solutions

0 голосов
/ 23 ноября 2018

В соответствии с версией Excel, которая у вас есть, этот пакет nuget сделает работу за вас

см. ссылку

у вас есть несколько интересных примеров

0 голосов
/ 23 ноября 2018

см. Ссылку.

Как прочитать значение одной ячейки Excel

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

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