我有这段代码:
using (StreamWriter writer = new StreamWriter("C:\\Users\\HP8200\\Desktop\\teste.txt"))
{
string numcont = _transaction.PartyFederalTaxID;
double numenc = _transaction.BillToPartyID;
double numfatura = _transaction.BillToPartyID;
string zona = _transaction.BillToPartyCountryID;
DateTime data = _transaction.CreateDate;
string ean = _transaction.ATDocCodeId;
double iva = _transaction.TotalTaxAmount;
double precoantesdisc = _transaction.TotalLineItemDiscountAmount;
double preconet = _transaction.TotalNetAmount;
writer.WriteLine(numcont,";", numenc,";", numfatura,";", data,";", zona, Environment.NewLine ,
ean,";", iva,";", precoantesdisc,";", preconet);
}
MessageBox.Show("gravou");
它应该将所有这些变量保存到我说的文本文件中,但它只写第一个变量(numcont)。我需要做什么,它在文本文件中写下我需要的所有变量? 随意请求更多代码。
答案 0 :(得分:6)
您需要格式化字符串:
writer.WriteLine(string.Format("{0};{1};{2};{3};{4}{5}{6};{7};{8};{9}",numcont, numenc, numfatura, data.ToString(), zona, Environment.NewLine, ean, iva, precoantesdisc, preconet));
如果您可以使用C#6语法:
writer.WriteLine($"{numcont};{numenc};{numfatura};{data.ToString()};{zona}{Environment.NewLine}{ean};{iva};{precoantesdisc};{preconet}");
修改强>
仅使用日,月和年:
writer.WriteLine($"{numcont};{numenc};{numfatura};{data.ToString("yyyyMMdd")};{zona}{Environment.NewLine}{ean};{iva};{precoantesdisc};{preconet}");
模式" yyyMMdd"可以按你的要求安排。例如" dd.MM.yyyy"
答案 1 :(得分:5)
只需执行以下操作
您必须连接变量中的所有变量,然后将其作为参数传递
var line = numcont +";"+ numenc+";"+ numfatura+";"+ data+";"+ zona +Environment.NewLine + ean+";"+ iva+";"+ precoantesdisc+";"+ preconet;
writer.WriteLine(line);
或出于可读原因
var line =string.Format("{0};{1};{2};{3};{4}\n{5};{6};{7};{8}",numcont, numenc, numfatura, data.ToString(), zona, ean, iva, precoantesdisc, preconet);
答案 2 :(得分:1)
使用File.WriteAllText()将简化您的代码,尝试在线运行this example:
public static void Main()
{
string numcont = "abc";
double numenc = 1.1;
double numfatura = 12.2;
string zona = "def";
DateTime data = new DateTime();
string ean = "hij";
double iva = 23.4;
double precoantesdisc = 34.5;
double preconet = 45.6;
var info = numcont + ";" + numenc + ";" + numfatura + ";" + data + ";"
+ zona + Environment.NewLine + ean +";" + iva + ";" +
precoantesdisc +";" + preconet;
File.WriteAllText("abc.txt",info);
Console.Write(info);
}
答案 3 :(得分:1)
如果查看方法StreamWriter.WriteLine,您将看到没有任何重载符合您提供给方法的参数模式。
到目前为止,您使用以下签名呼叫this overload:
public virtual void WriteLine(<br> string format,<br> params object[] arg<br> )
文档说明了参数arg
包含零个或多个要格式化和写入的对象的对象数组.... format参数由零个或多个文本运行组成,其中包含零个或多个索引占位符(称为格式项),这些占位符对应于此方法的参数列表中的对象。格式化过程使用相应对象的值的字符串表示替换每个格式项。
这似乎不是你想要的。
一种常用的显示对象的方法是覆盖ToString
方法。
public override string ToString()
{
return $"{PartyFederalTaxID};{BillToPartyID};{CreateDate};{BillToPartyCountryID}" + Environment.NewLine +
$"{ATDocCodeId};{TotalTaxAmount}{TotalLineItemDiscountAmount}{TotalNetAmount}"
}
这将允许您确定格式,您可以简单地将整个对象作为参数转储到WriteLine
方法中。将自动调用ToString
方法:
writer.WriteLine(_transaction);
答案 4 :(得分:0)
您还可以使用string.Concat(),因为它会将所有值连接到字符串
writer.WriteLine(string.Concat(numcont,";", numenc,";", numfatura,";", data,";", zona, Environment.NewLine ,
ean,";", iva,";", precoantesdisc,";", preconet));
或
StreamWriter.WriteLine(string format, params object[] arg)
重载方法如下
writer.WriteLine("{0};{1};{2};{3};{4};{5};{6}:{7};{8};{9}", numcont, numenc, numfatura, data, zona, Environment.NewLine,
ean, iva, precoantesdisc, preconet);