有什么方法可以将不同的.txt文件(实际上是所有.txt文件的内容)的内容放到Excel 2010中?我需要一个单元格(A1)作为文件的名称,另一个单元格(A2)作为该.txt文件的全部内容。其他.txt文件也是如此,即B1-B2,C1-C2等
提前致谢。
答案 0 :(得分:1)
如果CSV可以接受,您可以编写一个小程序来读取给定目录中的所有文本文件,并以CSV格式写出您需要的数据:
"File Name 1","Contents of File 1"
"File Name 2","Contents of File 2"
如果在Excel中打开CSV,数据将按照您指定的方式显示。
如果您必须拥有真正的Excel文件(.xls,.xlsx),则可以使用Interop从C#访问Excel库,但此解决方案稍微复杂一些。
http://msdn.microsoft.com/en-us/library/ms173186(v=vs.80).aspx
您可以使用Directory.EnumerateFiles
列出所需文件夹中的所有文件名,并使用File.ReadAllText
读取每个文件的内容。
使用CSV文件时,输出的正确引用会有一些细微差别(请参阅我的答案开头的维基百科链接)。我写了一点extension method,以便更容易输出正确引用的CSV:
static public class Extensions
{
static public string CsvQuote(this string text)
{
if (text == null)
{
return string.Empty;
}
bool containsQuote = false;
bool containsComma = false;
int len = text.Length;
for (int i = 0; i < len && (containsComma == false || containsQuote == false); i++)
{
char ch = text[i];
if (ch == '"')
{
containsQuote = true;
}
else if (ch == ',')
{
containsComma = true;
}
}
bool mustQuote = containsComma || containsQuote;
if (containsQuote)
{
text = text.Replace("\"", "\"\"");
}
if (mustQuote)
{
return "\"" + text + "\""; // Quote the cell and replace embedded quotes with double-quote
}
else
{
return text;
}
}
}
编辑:
关闭我的头脑(未调试或任何东西),写出CSV的代码可能如下所示:
string myDirectory = @"C:\Temp";
StringBuilder csv = new StringBuilder();
foreach (string fileName in Directory.EnumerateFiles(myDirectory))
{
string fileContents = File.ReadAllText(fileName);
csv.Append(fileName).Append(",").AppendLine(fileContents.CsvQuote());
}
File.WriteAllText(@"C:\SomePath\SomeFile.csv", csv.ToString());