Отображать значения в Excel Spreadhseet, а не в консоли, Linq в xml, c # - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть этот рабочий код, который анализирует значения из файлов XML.Вместо того, чтобы записывать данные в консоль, как я могу записать данные в электронную таблицу Excel?Любая помощь, пожалуйста.

namespace TestCFG
{
    class Program
    {
        public class XAxisCalib
        {
            public int Max1 { get; set; }
            public int Min2 { get; set; }
            public int Max3 { get; set; }
            public int Min4 { get; set; }
            public int Max5 { get; set; }
            public int Min6 { get; set; }
        }

        static void Main(string[] args)
        {
            string[] fileEntries = Directory.GetFiles(@"c:\Sciclone UAC", "*.cfg*");
            foreach (string fileName in fileEntries)
            {
                XDocument doc = XDocument.Load(fileName);
                var query = from x in doc.Descendants("XAxisCalib")
                            select new
                            {
                                //Max1 = x.Attribute("Max").Value,
                                //Min2 = x.Attribute("Min").Value
                                MaxChild = x.Descendants("Max"),
                                MinChild = x.Descendants("Min")
                            };

                foreach (var x in query)
                {
                    foreach (var nextLevel in x.MaxChild)
                    {
                        Console.WriteLine("XMax: " + nextLevel.Value);
                    }
                    foreach (var nextLevel in x.MinChild)
                    {
                        Console.WriteLine("XMin: " + nextLevel.Value);
                    }
                    //Console.WriteLine("XAxisCalib");
                }

                var query2 = from y in doc.Descendants("YAxisCalib")
                             select new
                             {
                                 //Max3 = x.Attribute("Max").Value,
                                 //Min4 = x.Attribute("Min").Value
                                 MaxChild = y.Descendants("Max"),
                                 MinChild = y.Descendants("Min")

                             };


                foreach (var y in query2)
                {
                    foreach (var nextLevel in y.MaxChild)
                    {
                        Console.WriteLine("YMax: " + nextLevel.Value);
                    }
                    foreach (var nextLevel in y.MinChild)
                    {
                        Console.WriteLine("YMin: " + nextLevel.Value);
                    }

                    //Console.WriteLine("YAxisCalib");

                    var query3 = from z in doc.Descendants("ZAxisCalib")
                                 select new
                                 {
                                     //Max5 = x.Attribute("Max").Value,
                                     //Min6 = x.Attribute("Min").Value
                                     MaxChild = z.Descendants("Max"),
                                     MinChild = z.Descendants("Min")
                                 };

                    foreach (var z in query3)
                    {
                        foreach (var nextLevel in z.MaxChild)
                        {
                            Console.WriteLine("ZMax: " + nextLevel.Value);
                        }
                        foreach (var nextLevel in z.MinChild)
                        {
                            Console.WriteLine("ZMin: " + nextLevel.Value);
                        }

                        //Console.WriteLine("ZAxisCalib");
                    }
                }
            }
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 09 сентября 2011

Существует несколько способов создания электронной таблицы из XML.- Используйте Office API.Это хороший, хотя и тяжелый подход.API очень сложный, излишний для простых операций, но необходимый, если вам нужны формулы.- Выписать Excel XML, еще сложнее.- Запишите файл CSV, подходящий для простого неформатного вывода.Следите за значениями с запятыми и т. Д. - выпишите таблицу HTML, Excel откроет все в ячейках.

0 голосов
/ 09 сентября 2011

Используя Json.NET, я считаю, что вы можете сделать что-то вроде этого:

string json = JsonConvert.SerializeObject(table, Formatting.Indented);

Вот ссылка на Json.NET: http://json.codeplex.com/

0 голосов
/ 09 сентября 2011

Используйте для этого офис API что-то вроде

using System;
using System.Reflection; 
using Microsoft.Office.Interop.Excel;

public class CreateExcelWorksheet
{
    static void Main()
    {
        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

        if (xlApp == null)
        {
            Console.WriteLine("EXCEL could not be started. Check that your office installation and project references are correct.");
            return;
        }
        xlApp.Visible = true;

        Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
        Worksheet ws = (Worksheet)wb.Worksheets[1];

        if (ws == null)
        {
            Console.WriteLine("Worksheet could not be created. Check that your office installation and project references are correct.");
        }

        // Select the Excel cells, in the range c1 to c7 in the worksheet.
        Range aRange = ws.get_Range("C1", "C7");

        if (aRange == null)
        {
            Console.WriteLine("Could not get a range. Check to be sure you have the correct versions of the office DLLs.");
        }

        // Fill the cells in the C1 to C7 range of the worksheet with the number 6.
        Object[] args = new Object[1];
        args[0] = 6;
        aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);

        // Change the cells in the C1 to C7 range of the worksheet to the number 8.
        aRange.Value2 = 8;
    }
}

С

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...