我是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 ,如-> param1,p0 .....
因此,我想用Excel工作表中的param2值替换例如param2的值(在我的.txt文件中)。我想使用循环中两个文件中都存在的所有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;
}
}
}
如果有人对我有一些建议,谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
我能想到的最好的是:
paramNum
的行解析为objcets,并将其放入Dictionary<string, double>
。xlWorkSheet.Cells[row,"A"]
,然后在您的excel文件中
xlWorkSheet.Cells[row-1, "A"]
。如何读取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;
答案 2 :(得分:0)