2011-08-05 2 views
0

문제점이 있습니다. 전자 메일로 보내려는 XML 스프레드 시트 파일이 있습니다. 그래서 저는 바이너리 파일로 변환하여 이메일에 첨부했습니다. 문제는 Excel에서 열려고 할 때 저장 한 데이터가 표시되지 않는 경우입니다. 변환 한 후XML 파일을 이진 형식 파일로 변환 한 후 XML 헤더가 누락되었습니다.

<?xml version="1.0" encoding="utf-8"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> 
... 
<Styles> 
... 
</Styles> 
<Worksheet> 
... 
</Worksheet></Workbook> 


:
방법이 있어야한다 :

<Worksheet> 
... 
</Worksheet> 

내가 해봤 내가 XML 파일처럼 열었을 때 나는 그것이 XML 헤더를 저장하지 않았다는 것을 깨달았다 xmldocument를 사용하기는했지만 작동하지 않았습니다. 여전히 작동하지 않는 문자열을 사용해 보았습니다.

UTF8Encoding encoding = new UTF8Encoding(); 
binaryFile = encoding.GetBytes(xmlFile); 

가 어떻게이 문제를 해결할 수 있습니다 : 나는 바이너리 XML을 변환하는 방법
이다? 감사합니다. .

+3

나는 당신이 상당히 복잡한 개념을 이해하지 못했다고 생각합니다. 그러나 세부 정보가 없어도 올바른 방향으로 안내하는 것이 어렵습니다. 예를 들면 xml 파일을 전자 메일에 첨부하기 전에 변환 할 필요가 없습니다. 왜 그렇게 생각하니? – Achim

+0

XML 파일을 전자 메일에 첨부하고 싶기 때문에이 파일을 이진 배열로 변환해야 MailMessage 클래스를 사용하여 전자 메일에 첨부 할 수 있습니다. – danny

답변

0

실수를 발견했습니다. XML 파일을 직렬화하지 않았기 때문에 XML 헤더가없는 데이터가 변환 된 것입니다. 그래서이 문제를 해결할 수있는 두 가지 방법이 있습니다 : 먼저 헤더를 데이터 문자열과 연결하거나 serialize 함수를 사용할 수 있습니다. This is where I've found how to do it.

1

XML 파일을 변환하는 방법에 대한 자세한 정보가 필요하다고 생각합니다.

설명을 통해 Excel 스프레드 시트를 XML로 저장 한 것과 같은 이유로 어떤 이유로 든이 텍스트 문서를 전자 메일에 첨부 할 수 없습니다. 내 생각 엔 바이트 배열이 필요한 XML 파일을 첨부하는 메서드를 사용하고 있으며 파일 위치를 제공 할 수 없다는 것입니다. 이에 대해 더 많은 정보를 제공 할 수 있다면 상황이 잘못 될 수 있습니다.

정말에 붙어있어 부분입니다 : 내가이 XMLDocument를 사용하려했지만 난 작동하지 않는

, 나는 또한 여전히 작동하지 않는, 문자열을 사용하여 을 시도했다.

어떻게 문자열을 시도 했습니까? FileStream을 사용하여 디스크에서 파일을 읽었습니까? 그렇다면 파일의 전체 내용을 검색 할 수 있어야합니다.

전체적으로 XmlDocument를 사용하고 XmlDocument.OuterXml을 사용하고 있습니까? 이것은 아마도 루트 노드 내부의 XML 본문에 속하지 않으므로 제어 헤더를 제공하지 않습니다.

그래서 실제로 시도했을 두 가지가 있습니다. 나는 디스크에있는 XML 파일을했고, 코드와 내 유일한 옵션을 통해 이메일에 첨부 필요한 경우 첫째, 내가 좋아하는 뭔가를 할 거라고, 바이트 배열을 제공하는 것이 었습니다 :

using (FileStream fs = new FileStream("", FileMode.Open, FileAccess.Read)) 
{ 
    byte[] binaryFile = new byte[fs.Length]; 
    fs.Read(binaryFile, 0, buff.LongLength); 

    //Copy the byte array to your email object. 
} 

을 이제 경우이 ISN ' 현재 수행중인 작업 (디스크에 파일?), 수행해야 할 작업 (자동화 된 전자 메일 보내기), 제한 조건 및 기타 정보를 더 많이 제공해야합니다. 잠재적 솔루션을 제한 할 것입니다.