Кто-то ест мой <? Xml version = "1.0"?> Возвращающий Excel XML в Asp.net MVC - PullRequest
0 голосов
/ 23 января 2010

Я играю с литералами VB XML для возврата и файлом Excel XML. проблема в том, что первая строка, содержащая <?xml version="1.0"?>, не загружается.

Вот код:

Public Class ReservasController
Function Test()
    Response.Clear()
    Response.AddHeader("Content-Disposition", "attachment; filename=test.xml")
    Response.ContentType = "application/vnd.ms-excel"
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8")
    Response.Write(GetXML())
    ''//This works:
    ''//Response.Write("<?xml version=""1.0""?>" + GetXML().ToString())
    Response.End()
    Return Nothing
End Function

Метод GetXML очень прост:

Private Function GetXML()
    Return <?xml version="1.0"?>
           <?mso-application progid="Excel.Sheet"?>
           <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
               xmlns:o="urn:schemas-microsoft-com:office:office"
               xmlns:x="urn:schemas-microsoft-com:office:excel"
               xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
               xmlns:html="http://www.w3.org/TR/REC-html40">
               <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
                   <Author>Bizcacha Excel Generator</Author>
                   <LastAuthor>Bizcacha Excel Generator</LastAuthor>
                   <Created>20100101</Created>
                   <Company>Bizcacha</Company>
                   <Version>1</Version>
               </DocumentProperties>
               <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
               </ExcelWorkbook>
               <Styles>
                   <Style ss:ID="Default" ss:Name="Normal">
                       <Alignment ss:Vertical="Bottom"/>
                       <Borders/>
                       <Font/>
                       <Interior/>
                       <NumberFormat/>
                       <Protection/>
                   </Style>
               </Styles>
               <Worksheet ss:Name="title">
                   <Table x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">
                       <Column ss:Width="100"/>
                       <Column ss:Width="100"/>
                       <Row ss:AutoFitHeight="0">
                           <Cell ss:StyleID="Default"><Data ss:Type="String">Hello</Data></Cell>
                           <Cell ss:StyleID="Default"><Data ss:Type="String">World</Data></Cell>
                       </Row>
                   </Table>
               </Worksheet>
           </Workbook>
End Function
End Class

Ответы [ 2 ]

1 голос
/ 23 января 2010

Глядя на это, будет ли это иметь отношение к возвращению строки, в которой используются кавычки ... почему бы не заменить эти кавычки на Chr (34), который является кодом ASCII для " ... как пример:

Const Char DblQuote As String = Chr(34)

Private Function GetXML()
    Return "<?xml version=" & DblQuote & "1.0" & DblQuote & "?>" & vbCrLf _
           & "<?mso-application progid=" & DblQuote & "Excel.Sheet" & DblQuote & "?>" & vbCrLf _ 

and so on...

Что ты думаешь?

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0 голосов
/ 02 декабря 2010

Создание XML-литералов было проблемой, поэтому я вернулся к конкатенации строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...