2017-09-09 16 views
1

Microsoft Office 파일이 이전의 Office 97 이전 버전이 아닌 Open XML 형식임을 프로그래밍 방식으로 알 수 있습니까?Microsoft Office 파일이 Open XML 형식임을 알 수있는 방법이 있습니까?

최종 사용자로서 보통 파일 확장자를 .zip으로 변경하고 압축을 해제하십시오. 압축을 풀면 Open XML 형식이라는 것을 알게됩니다. 하지만 그 방법이 바보가 아니며 작동하지 않는 파일이 Open XML 파일이 아닌지 확실하지 않습니다.

나는 Powershell과 출력에서 ​​CustomXmlParts 속성이 있기 때문에이 형식이 내가보고있는 Open XML 형식 통합 문서라고 생각할 수 있습니다.

PS C:\Users\Sathyaish> $excel = New-Object -ComObject Excel.Application 
PS C:\Users\Sathyaish> $workbook = $excel.Workbooks.Open("C:\Sathyaish\temp\Foo.xlsx") 
PS C:\Users\Sathyaish> $workbook | select C*, F* 


Creator     : 1480803660 
ChangeHistoryDuration : 0 
Charts     : System.__ComObject 
CodeName     : 
CommandBars    : 
Comments     : 
ConflictResolution  : 1 
Container    : 
CreateBackup    : False 
CustomDocumentProperties : System.__ComObject 
CustomViews    : System.__ComObject 
CalculationVersion  : 171027 
ContentTypeProperties : 
Connections    : System.__ComObject 
CheckCompatibility  : False 
CustomXMLParts   : System.__ComObject 
ConnectionsDisabled  : False 
CaseSensitive   : False 
ChartDataPointTrack  : True 
FileFormat    : 51 
FullName     : C:\Sathyaish\temp\Foo.xlsx 
FullNameURLEncoded  : C:\Sathyaish\temp\Foo.xlsx 
Final     : False 
ForceFullCalculation  : False 

동일한 것을 말하기위한 VSTO/VBA 방법이 있습니까? 위의 목록에있는 FileFormat 속성의 값을 살펴 보았습니까? 유효한 정수 값과 그 의미는 무엇입니까?

Open XML SDK를 사용하여 문서를로드하려는 옵션이 있어야하며 실패하면 올바른 Open XML 파일 형식이 아니라는 것을 알고 있습니다. 그러나 이것이 Microsoft Office 파일이 아닌 파일과 같은 다른 가능성을 배제하지 않습니다.

+1

하나는 파일 확장자입니다 : XLSX 대 XLS. 또 다른 비 XML 형식은 xlsb (바이너리)입니다. 확장의 "x"및 "m"은 Open XML을 나타냅니다. 자세한 내용은 [Microsoft] (https://support.office.com/en-us/article/Open-XML-Formats-and-file-name-extensions-5200D93C-3449-4380-8E11-31EF14555B18) –

답변

1

Excel의 FileFormat 유형 Microsoft.Office.Interop.Excel.XlFileFormat이다 (각 Office 응용 프로그램 형식 자체의 목록이 있습니다)

// 
    // Summary: 
    //  Specifies a type of text format 
    xlCurrentPlatformText = -4158, 
    // 
    // Summary: 
    //  Excel workbook format. 
    xlWorkbookNormal = -4143, 
    // 
    // Summary: 
    //  Symbolic link format. 
    xlSYLK = 2, 
    // 
    // Summary: 
    //  Lotus 1-2-3 format. 
    xlWKS = 4, 
    // 
    // Summary: 
    //  Lotus 1-2-3 format. 
    xlWK1 = 5, 
    // 
    // Summary: 
    //  Comma separated value. 
    xlCSV = 6, 
    // 
    // Summary: 
    //  Dbase 2 format. 
    xlDBF2 = 7, 
    // 
    // Summary: 
    //  Dbase 3 format. 
    xlDBF3 = 8, 
    // 
    // Summary: 
    //  Data Interchange format. 
    xlDIF = 9, 
    // 
    // Summary: 
    //  Dbase 4 format. 
    xlDBF4 = 11, 
    // 
    // Summary: 
    //  Deprecated format. 
    xlWJ2WD1 = 14, 
    // 
    // Summary: 
    //  Lotus 1-2-3 format. 
    xlWK3 = 15, 
    // 
    // Summary: 
    //  Excel version 2.0. 
    xlExcel2 = 16, 
    // 
    // Summary: 
    //  Excel template format. 
    xlTemplate = 17, 
    // 
    // Summary: 
    //  Template 8 
    xlTemplate8 = 17, 
    // 
    // Summary: 
    //  Microsoft Office Excel Add-In. 
    xlAddIn = 18, 
    // 
    // Summary: 
    //  Microsoft Excel 97-2003 Add-In 
    xlAddIn8 = 18, 
    // 
    // Summary: 
    //  Specifies a type of text format. 
    xlTextMac = 19, 
    // 
    // Summary: 
    //  Specifies a type of text format. 
    xlTextWindows = 20, 
    // 
    // Summary: 
    //  Specifies a type of text format. 
    xlTextMSDOS = 21, 
    // 
    // Summary: 
    //  Comma separated value. 
    xlCSVMac = 22, 
    // 
    // Summary: 
    //  Comma separated value. 
    xlCSVWindows = 23, 
    // 
    // Summary: 
    //  Comma separated value. 
    xlCSVMSDOS = 24, 
    // 
    // Summary: 
    //  Deprecated format. 
    xlIntlMacro = 25, 
    // 
    // Summary: 
    //  Microsoft Office Excel Add-In international format. 
    xlIntlAddIn = 26, 
    // 
    // Summary: 
    //  Excel version 2.0 far east. 
    xlExcel2FarEast = 27, 
    // 
    // Summary: 
    //  Microsoft Works 2.0 format 
    xlWorks2FarEast = 28, 
    // 
    // Summary: 
    //  Excel version 3.0. 
    xlExcel3 = 29, 
    // 
    // Summary: 
    //  Lotus 1-2-3 format. 
    xlWK1FMT = 30, 
    // 
    // Summary: 
    //  Lotus 1-2-3 format. 
    xlWK1ALL = 31, 
    // 
    // Summary: 
    //  Lotus 1-2-3 format. 
    xlWK3FM3 = 32, 
    // 
    // Summary: 
    //  Excel version 4.0. 
    xlExcel4 = 33, 
    // 
    // Summary: 
    //  Quattro Pro format. 
    xlWQ1 = 34, 
    // 
    // Summary: 
    //  Excel version 4.0. Workbook format. 
    xlExcel4Workbook = 35, 
    // 
    // Summary: 
    //  Specifies a type of text format. 
    xlTextPrinter = 36, 
    // 
    // Summary: 
    //  Lotus 1-2-3 format. 
    xlWK4 = 38, 
    // 
    // Summary: 
    //  Excel version 5.0. 
    xlExcel5 = 39, 
    // 
    // Summary: 
    //  Excel 95. 
    xlExcel7 = 39, 
    // 
    // Summary: 
    //  Deprecated format. 
    xlWJ3 = 40, 
    // 
    // Summary: 
    //  Deprecated format. 
    xlWJ3FJ3 = 41, 
    // 
    // Summary: 
    //  Specifies a type of text format. 
    xlUnicodeText = 42, 
    // 
    // Summary: 
    //  Excel version 95 and 97. 
    xlExcel9795 = 43, 
    // 
    // Summary: 
    //  Web page format. 
    xlHtml = 44, 
    // 
    // Summary: 
    //  MHT format. 
    xlWebArchive = 45, 
    // 
    // Summary: 
    //  Excel Spreadsheet format. 
    xlXMLSpreadsheet = 46, 
    // 
    // Summary: 
    //  Excel12 
    xlExcel12 = 50, 
    // 
    // Summary: 
    //  Open XML Workbook 
    xlOpenXMLWorkbook = 51, 
    // 
    // Summary: 
    //  Workbook default 
    xlWorkbookDefault = 51, 
    // 
    // Summary: 
    //  Open XML Workbook Macro Enabled 
    xlOpenXMLWorkbookMacroEnabled = 52, 
    // 
    // Summary: 
    //  Open XML Template Macro Enabled 
    xlOpenXMLTemplateMacroEnabled = 53, 
    // 
    // Summary: 
    //  Open XML Template 
    xlOpenXMLTemplate = 54, 
    // 
    // Summary: 
    //  Open XML Add-In 
    xlOpenXMLAddIn = 55, 
    // 
    // Summary: 
    //  Excel8 
    xlExcel8 = 56, 
    // 
    // Summary: 
    //  OpenDocument Spreadsheet 
    xlOpenDocumentSpreadsheet = 60 

당신은 PowerShell에서하지만 내 머리 위로 떨어져 XlFileFormat 객체로 그 정수 값을 캐스팅 할 수 있어야한다 정확히 어떻게 해야할지 모르겠다. 그것은 (예 C 번호입니다)이에 대한 몇 가지 변화해야한다 : 차이의

Enum.Parse(typeof(Microsoft.Office.Interop.Excel.XlFileFormat), fileFormat)

+0

오 예 . 고맙습니다. Powershell은 Visual Studio 또는 LINQPad를 실행하지 않기 위해 노력했습니다. 나는 Powershell에서 그것을 할 필요가 없다. 가장 가능성이있는 Java이지만 그 (언어)는 중요하지 않습니다. Interop 어셈블리에서 제공하는 API에 관심이 있었으며 답변이 머리에 못을 박았습니다. 고마워. –