有关a.newb的内容,但是我有大约15,000个带有XBRL数据的html文件。 我已经从http://download.companieshouse.gov.uk/en_monthlyaccountsdata.html下载了这些文件 理想情况下,我想从所有这些文件中提取与公司名称和无形资产相关的信息,但我不确定如何执行此操作。
理想情况下,我希望将数据导出到单个Excel文件中的列中。
任何帮助都将不胜感激。
答案 0 :(得分:1)
回答有点迟,但没关系。首先,您可以查看VT Fact Viewer。它可以为您提供文档中XBRL事实的网格显示,您可以将它们导出到Excel。在那里,你需要进行一些过滤,寻找像“核心:无形资产”或者“uk-gaap:无形......”之类的标签。
但是,如果您在许多文档(例如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);
根据需要更改输入文件名以循环浏览目录或文件名列表。