none
Сравнение двух файлов с выводом данных в третий RRS feed

  • Вопрос

  • Здравствуйте.

    Пытаюсь сравнить два файла exel? где первый файл эталонный, второй из последней выборки и вывод в третий файл уникальных данных. В эталонно, как и в втором файле есть символы на кириллице и цифры.

    # переменные файлов
    $file1 = Get-Content "C:\TEMP\1.xls" 
    $file2 = Get-Content "C:\TEMP\2.xls"
    $out = "C:\TEMP\out.xls"
    
    #Сравнение 
    Compare-Object $file1 $file2 | out-file $out

    Скрин вывода из третьего файла

    Подскажите пожалуйста, как сделать скрипт, чтоб пропала кракозябра и данные были в читабельном виде?

    21 июля 2020 г. 11:42

Ответы

  • excel это не тектовый файл поэтому get-content выдает нечитаемый мусор даже если файл будет пустым

    как результат и выходной файл содержит мусор

    для работы с таблицами есть 3 выхода:

    1 сохранить оба файла как csv и использовать Import-CSV / Export-CSV

    2 использовать ole обьекты для работы с таблицами

    3 использовать модуль для работы с excel


    The opinion expressed by me is not an official position of Microsoft

    • Предложено в качестве ответа Alexander RusinovModerator 21 июля 2020 г. 14:21
    • Изменено Vector BCOModerator 24 июля 2020 г. 11:07
    • Помечено в качестве ответа Vector BCOModerator 27 июля 2020 г. 5:56
    • Снята пометка об ответе Kapusta 29 июля 2020 г. 12:02
    • Помечено в качестве ответа Vector BCOModerator 11 августа 2020 г. 20:42
    21 июля 2020 г. 13:25
    Модератор

Все ответы

  • Попробуйте get-content -encoding unicode
    21 июля 2020 г. 11:46
  • Попробовал вот что вышло

    21 июля 2020 г. 13:00
  • excel это не тектовый файл поэтому get-content выдает нечитаемый мусор даже если файл будет пустым

    как результат и выходной файл содержит мусор

    для работы с таблицами есть 3 выхода:

    1 сохранить оба файла как csv и использовать Import-CSV / Export-CSV

    2 использовать ole обьекты для работы с таблицами

    3 использовать модуль для работы с excel


    The opinion expressed by me is not an official position of Microsoft

    • Предложено в качестве ответа Alexander RusinovModerator 21 июля 2020 г. 14:21
    • Изменено Vector BCOModerator 24 июля 2020 г. 11:07
    • Помечено в качестве ответа Vector BCOModerator 27 июля 2020 г. 5:56
    • Снята пометка об ответе Kapusta 29 июля 2020 г. 12:02
    • Помечено в качестве ответа Vector BCOModerator 11 августа 2020 г. 20:42
    21 июля 2020 г. 13:25
    Модератор
  • Попробуйте get-content -encoding unicode
    Если там русские символы, видимо нужен UTF8
    21 июля 2020 г. 13:54
  • Извините, что сразу не ответил.

    Импорт в .csv не помог, а вот если руками его пересохранять, то всё нормально.

    $InFile = Get-Item "c:\TEMP\1.xlsx"
    $OutFile= "C:\temp\3.csv"
    Import-Excel $Infile -noheader | Export-Csv $OutFile -NoTypeInformation

    В .csv так же выходит кракозябра.C OLE мне будет уже сложновато

    29 июля 2020 г. 12:05
  • Извините, что сразу не ответил.

    Импорт в .csv не помог, а вот если руками его пересохранять, то всё нормально.

    $InFile = Get-Item "c:\TEMP\1.xlsx"
    $OutFile= "C:\temp\3.csv"
    Import-Excel $Infile -noheader | Export-Csv $OutFile -NoTypeInformation

    В .csv так же выходит кракозябра.C OLE мне будет уже сложновато

    не нужно мешать в одном котле 2 разные подхода.

    ответ выше описан иначе от того, что вы делаете.


    The opinion expressed by me is not an official position of Microsoft


    29 июля 2020 г. 12:15
    Модератор