2012-08-06 1 views
1

다음 코드는 엑셀에서 나에게 수출 XML 데이터를 도움이 될 것입니다 : 내가 코드를 찾고 있어요프로그래밍 방식으로 XML 데이터를 Excel 파일로 가져올 수 있습니까?

이제
Excel.Application application = new Excel.Application(); 
      application.Workbooks.Open(excelFilepath, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value, 
            Missing.Value); 

     string data = null; 
     application.ActiveWorkbook.XmlMaps[1].XmlExport(out data); 

즉 Excel로 나에게 가져 오기 XML 데이터를 도움이 될 것입니다, 내가 클릭하여 파일을 수동으로 수입하는 것처럼 "개발자"탭에서 "XML 가져 오기"를 선택하십시오.

다른 사람이 어떻게하는지 말해 줄 수 있습니까?

답변

1

동일한 시스템과 MSDN 웹 사이트를 사용하십시오. 엑셀 Interop를 내 XmlMap 관련

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xmlmap.import%28v=office.14%29

방법에는 다음과 같은 링크를 찾기 위해 나에게 매우 짧은 시간이 걸렸습니다. 특정 링크는 url (filePath)을 가져 와서 xml 데이터를 가져 오는 XmlMap.Import 함수입니다.

해당 페이지에 ImportXml() 함수에 대한 링크가 있습니다.이 링크는 XML 문자열을 URL 대신 함수에 대한 직접 입력으로 사용할 수 있습니다.

이 코드는이 두 가지 모두에 대해 XmlMap이 이미 정의되어 있다고 가정합니다. 나 자신은 프로그래밍 방식으로 인터페이스를 통해 Excel 문서에서 XmlMap을 정의하는 방법을 알지 못합니다.

1

XmlMaps [1] .Import()가 작동하지 않고 그냥 충돌하고 필수 XmlMaps를 정의하는 방법을 알지 못합니다. XmlMaps.Add (문자열 스키마) 메서드를 찾았지만 XML 스키마가 전달되지 않았습니다. 내 손안에 모두 XML 파일입니다.

내 상황은 다음과 같습니다. xml을 가지고 있으며 xml 파일을 excel2007로 드래그하여 Excel을 Excel로 수동으로 가져올 수 있습니다. 그런 다음 대화 상자가 나타나고 xml을 여는 방법을 묻습니다. 3 가지 옵션이 있습니다 : xml, xml 소스로 읽기 전용 엑셀 워크 시트. 첫 번째 옵션을 선택하면 my xml 데이터가 자동으로 Excel로 가져옵니다.

그런 다음 C#을 통해 동일한 작업을 시도하지만 찾은 모든 방법은 쓸모가 없습니다.

3 시간 동안 붙어 있습니다.

그리고 다행히도 해결책을 찾았습니다. XmlMaps를 사용할 필요가 없으며 대신 OpenXml()을 사용하십시오.

여기에 legal xml을 Excel로 가져 오는 C# 방식이 있습니다.

  1. 새 C# 프로젝트를 만듭니다. 프로젝트에 마우스 오른쪽 버튼을 클릭하고 "참조 추가"를 클릭 한 다음 "닷넷"탭을 선택하고 "Microsoft.Office.Interop.Excel"을 선택하십시오 (발견되지 않으면 Visual Studio에 Office 개발 유틸리티가 설치되어 있는지 확인하십시오) "확인"을 클릭하십시오. 이것으로, 당신은 C#에서 Excel을 운영 할 수 있습니다.

  2. 다음 코드를 붙여 넣습니다. "xApp.Workbooks.OpenXML()"메소드에 주목하여 "xlXmlLoadImportToList"옵션을 전달합니다.이 함수는 my draging xml과 동일하며 Excel의 첫 번째 옵션 작동을 선택합니다. "D : 내 \ : 여기에 다른 옵션 http://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.workbooks.openxml(v=office.11).aspx

  3. 은"XML "과 교체 을 설명하는 링크는"\ my.xml D "로 자신의 파일 경로에 변수 suce"XLSX "입니다.XLSX "

    다음

당신의 XML이 XLSX 행운으로 저장 여기

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Reflection; 
    using Microsoft.Office.Interop.Excel; 
    using Microsoft.Office.Interop; 
    using System.IO; 

    namespace SaveXmlAsExcel 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       string xml = args[0]; 
       string xlsx = args[1]; 

       if (false == File.Exists(xml)) 
       { 
        Console.WriteLine("{0} file not exist", xlsx); 
        return; 
       } 

       Microsoft.Office.Interop.Excel.Application xApp = new Microsoft.Office.Interop.Excel.Application(); 
       Microsoft.Office.Interop.Excel.Workbook excelWorkBook = xApp.Workbooks.OpenXML(xml, Type.Missing, Microsoft.Office.Interop.Excel.XlXmlLoadOption.xlXmlLoadImportToList); 

       excelWorkBook.SaveAs(xlsx, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange); 

       excelWorkBook.Close(); 
       xApp.Workbooks.Close(); 
      } 
     } 
    } 

내 XML입니다!..이 성공적으로 구문 분석 할 수 엑셀 법적 형식을 가지고 있어야합니다

<AwardProps xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <AwardPropRecord> 
    <g_AwardProps> 
     <entry> 
     <Id>0</Id> 
     <IsElite>0</IsElite> 
     <GoldCost>0</GoldCost> 
     <Exp>0</Exp> 
     </entry> 
     <entry> 
     <Id>255</Id> 
     <IsElite>255</IsElite> 
     <GoldCost>255</GoldCost> 
     <Exp>255</Exp> 
     </entry> 
    </g_AwardProps> 
    </AwardPropRecord> 
</AwardProps> 
+0

굉장하고, 굉장하고, 굉장하다 !!!!! –

관련 문제