@Rust_Cohle

Как в c# экспортировать данные в Excel?

Таким способом я передаю данные в строки, потом сохраняю в txt.
private string DeviceInformation(string stringIn)
        {
            StringBuilder StringBuilder1 = new StringBuilder(string.Empty);
            try
            {
                ManagementClass ManagementClass1 = new ManagementClass(stringIn);
                //Create a ManagementObjectCollection to loop through
                ManagementObjectCollection ManagemenobjCol = ManagementClass1.GetInstances();
                //Get the properties in the class
                PropertyDataCollection properties = ManagementClass1.Properties;
                foreach (ManagementObject obj in ManagemenobjCol)
                {
                    foreach (PropertyData property in properties)
                    {
                        try
                        {
                            if (property.Name == "Name" ||
                                property.Name == "Description" ||
                                property.Name == "Size" ||
                                property.Name == "Status" ||
                                property.Name == "ProductName" ||
                                property.Name == "ProductName" ||
                                property.Name == "ProductName" ||
                                property.Name == "FreeSpace" ||
                                property.Name == "ProviderName" ||
                                property.Name == "InstallDate" ||
                                property.Name == "Manufacturer" ||
                                property.Name == "Version" ||
                                property.Name == "BIOSVersion" ||
                                property.Name == "DataWidth" ||
                                property.Name == "ProcessorType" ||
                                property.Name == "L2CacheSize" ||
                                property.Name == "L2CacheSpeed" ||
                                property.Name == "L3CacheSpeed" ||
                                property.Name == "LastErrorCode" ||
                                property.Name == "MaxClockSpeed" ||
                                property.Name == "L2CacheSize" ||
                                property.Name == "L2CacheSize" ||
                                property.Name == "PathName" ||
                                property.Name == "Network" ||
                                property.Name == "PrinterStatus" )
                            {
                                StringBuilder1.AppendLine(EnToRu(property.Name)+ ":  " + obj.Properties[property.Name].Value.ToString());
                            }
                        }
                        catch
                        {
                            //Add codes to manage more informations
                        }
                    }
                    StringBuilder1.AppendLine();
                }
            }
            catch
            {
                //Win 32 Classes Which are not defined on client system
            }
            return StringBuilder1.ToString();
        }

Как можно экспортировать эти же данные в табличном виде в excel ?
  • Вопрос задан
  • 638 просмотров
Решения вопроса 1
AxisPod
@AxisPod
Ну вы можете создать OLE объект экселя и заполнить его. Главное вырубить у него сначала перерисовку и пересчет формул, а то долго делать будет. В добавок будет работать с любой версией и полностью официальное решение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
newross
@newross
Product owner
Самое простое решение - сохранить в формате csv разделив столбцы ';'.
Если нужна верстка, используйте любую из библиотек :
EPPlus
ExcelLibrary
Ответ написан
Комментировать
Zerpico
@Zerpico
Давно где-то на просторах интернета нашел самописный класс для работы с Excel. До сих пор им пользуюсь и меня устраивает.
Ссылка

Вот например как

//создаем экземпляр
MSO.Excel.Excel ex = new MSO.Excel.Excel();

try
{
//проверяем есть ли файл
    if (System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Reports\\Naklad.xltx"))
    {
        ex.OpenBook(AppDomain.CurrentDomain.BaseDirectory + "Reports\\Naklad.xltx");

        //пишем значения
        ex.SetValue("A1", "Значение1");
        ex.SetValue("A2", "Значение1");

        ex.Visible = true;  //показываем сам Excel
        ex.Dispose(); //закрываемся
    }
}
catch(Exception) {   }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы