当前位置: 代码迷 >> C# >> 请高手帮忙怎么实现读取文件之后部分内容再转成数组导出成xls或者txt
  详细解决方案

请高手帮忙怎么实现读取文件之后部分内容再转成数组导出成xls或者txt

热度:248   发布时间:2016-05-05 05:30:32.0
请高手帮忙如何实现读取文件之后部分内容再转成数组导出成xls或者txt
本帖最后由 liweizhe910 于 2014-12-20 20:11:58 编辑
初学C#没多久,喜欢编一些小程序自己玩玩。
文本内容如下,行数没法确定,我想从检测到“GCP label“之后成行读取,直到没有该数据为止。
然后对读取的
<GCP label="F1" alt="827.3882601642981" lat="35.09728123138197" lng="107.9195570049454" x="492632.598" y="3885434.835" z="889.992" tiePoint3D="false" index="0" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
数据进行类似EXCEL进行分列。大致为“点名”,“高度”“经度”“纬度”“X”,“Y”,“Z”等等……
输出成果比如
F1    827.3882601642981    35.09728123138197    107.9195570049454    492632.598    3885434.835    889.992
F2    …………

不胜感激!

TXT文件内容大致如下:
<?xml version="1.0" encoding="utf-8"?>
……
……
……
<focalLengthmm value="35"/>
<radialK1 value="0"/>
<radialK2 value="0"/>
<radialK3 value="0"/>
<tangentialT1 value="0"/>
<tangentialT2 value="0"/>
<calibReliability value="1"/>
<source value="exif"/>
<band name="Red" centralWaveLength="660" width="0" weight="0.2126"/>
<band name="Green" centralWaveLength="550" width="0" weight="0.7152"/>
<band name="Blue" centralWaveLength="470" width="0" weight="0.0722"/>
<fixedBands value="false"/>
<sensorWidthmm value="35.0000016"/>
</camera>
<GCP label="F1" alt="827.3882601642981" lat="35.09728123138197" lng="107.9195570049454" x="492632.598" y="3885434.835" z="889.992" tiePoint3D="false" index="0" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F2" alt="834.4799257609993" lat="35.09739118364963" lng="107.9165858619901" x="492361.702" y="3885447.256" z="897.085" tiePoint3D="false" index="1" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F3" alt="830.9783794358373" lat="35.09829349327527" lng="107.912486136961" x="491987.981" y="3885547.68" z="893.585" tiePoint3D="false" index="2" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F4" alt="896.7277699299157" lat="35.09755974687279" lng="107.9225770669944" x="492907.989" y="3885465.516" z="959.33" tiePoint3D="false" index="3" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F6" alt="886.2842321451753" lat="35.09703320990255" lng="107.9132348860874" x="492056.129" y="3885407.803" z="948.891" tiePoint3D="false" index="5" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F7" alt="890.258914001286" lat="35.09788375140636" lng="107.9096703913349" x="491731.206" y="3885502.452" z="952.867" tiePoint3D="false" index="6" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F8" alt="843.475115259178" lat="35.10031918798298" lng="107.9058835769165" x="491386.185" y="3885772.962" z="906.084" tiePoint3D="false" index="7" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F9" alt="893.2351437583566" lat="35.1008753137337" lng="107.9011548043902" x="490955.097" y="3885835.077" z="955.846" tiePoint3D="false" index="8" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<GCP label="F10" alt="858.8022832032293" lat="35.10133235071497" lng="107.9010685729101" x="490947.285" y="3885885.789" z="921.413" tiePoint3D="false" index="9" toleranceXY="0.02" toleranceZ="0.02" type="0"/>
<image path="F:\kou\Photo1\DSC04705.JPG" type="group1" enabled="true">
……
……
……




------解决思路----------------------

换用方法:因dataset读取时,你文件中有2个index,所以出错了,

 XDocument item = XDocument.Load("tingkou2.xml");
            StreamWriter sw = new StreamWriter("ntest.txt");
            var result = from x in item.Descendants("GCP")
                         select new
                         {
                             label = x.Attribute("label").Value,
                             alt = x.Attribute("alt").Value,
                             lat = x.Attribute("lat").Value,
                             lng = x.Attribute("lng").Value,
                             x = x.Attribute("x").Value,
                             y = x.Attribute("y").Value

                         };
            foreach (var el in result)
            {
                //MessageBox.Show(el.label + " " + el.alt + " " + el.lat);
                sw.WriteLine(el.label + " " + el.alt + " " + el.lat+" "+el.lng+" "+el.x+" "+el.y);
            }
            sw.Close();



  相关解决方案