但我有大约15,000个包含a.newb数据的html文件。我已经从http://download.companieshouse.gov.uk/en_monthlyaccountsdata.html下载了这些文件,理想情况下,我想从所有这些文件中提取与公司名称和无形资产相关的信息,但我不确定如何做到这一点。
理想情况下,我希望将数据导出到单个excel文件的列中。
任何帮助都将不胜感激。
发布于 2016-12-22 18:44:06
回答有点晚了,但不要紧。作为开始,您可以看看VT Fact Viewer。它可以为您提供文档中XBRL事实的网格显示,您可以将它们导出到Excel。一旦到了那里,你就需要做一些过滤,寻找像“core:In坦IntangibleAssets”或“uk-gaap:Inangable...”这样的标签。类似的事情。
但是,如果要对大量文档(如CH数据转储)执行此操作,则需要开始使用编程或脚本语言自己进行一些“适当的”xml处理。但是,查看器仍然是有帮助的,因为它会向你展示你想要提取的东西。
作为一个简单的示例,下面将为您提供一些CSV格式的无形资产数据,您可以在Excel中打开这些数据。使用C# (使用LINQPad)编写,因此如果需要,您必须进行翻译:
string fname = @"C:\ch_data\Prod223_1770_00101234_20160331.html";
var doc = XDocument.Load(fname);
// The 'ix' namespace may use 2008 or 2013 schema so we'll just use the .LocalName property of the tag
var elements = doc.Root
.Descendants()
.Where(x => x.Name.LocalName == "nonFraction")
.Where(x => x.Attributes().Any(a => a.Value.Contains("Intangible")));
var lines = new List<string>();
foreach (var element in elements)
{
var attribs = element.Attributes();
var ctx = attribs.FirstOrDefault(a => a.Name == "contextRef")?.Value ?? "";
var dec = attribs.FirstOrDefault(a => a.Name == "decimals")?.Value ?? "";
var scale = attribs.FirstOrDefault(a => a.Name == "scale")?.Value ?? "";
var units = attribs.FirstOrDefault(a => a.Name == "unitRef")?.Value ?? "";
var fmt = attribs.FirstOrDefault(a => a.Name == "format")?.Value ?? "";
var name = attribs.FirstOrDefault(a => a.Name == "name")?.Value ?? "";
var value = element.Value;
string line = $"\"{ctx}\",\"{dec}\",\"{scale}\",\"{units}\",\"{name}\",\"{fmt}\",\"{value}\"";
lines.Add(line);
//Console.WriteLine(line);
}
File.WriteAllLines(Path.ChangeExtension(fname, "csv"), lines);根据需要更改输入文件名以遍历目录或文件名列表。
https://stackoverflow.com/questions/41124641
复制相似问题