none
xml в документ RRS feed

  • Вопрос

  • Доброе время суток!

    Можно как-то переделать xml   файл в Excel или word в зависимости от того каким он должен быть. К примеру
    <?xml version="1.0"?>
    <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">
    Этот файл должен быть переделан в excel

    а вот этот в word

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?mso-application progid="Word.Document"?>
    <pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:47 MSDN Forums Consolidation (От:Visual C#)
    23 февраля 2010 г. 7:55

Ответы

Все ответы

  • Добрый день. Попробуйте предложенное решение из данного топика .
    Для связи [Mail]
    24 февраля 2010 г. 6:29
  • Мне надо не с Word сделать XML а наоборот. С  XML  сделать Word  или Excel  в зависсимости от того какой файл сохранён в формате XML. 
    24 февраля 2010 г. 10:48
  • Мне надо не с Word сделать XML а наоборот. С  XML  сделать Word  или Excel  в зависсимости от того какой файл сохранён в формате XML. 

    Тогда думаю вам поможет следующие(Правда во втором примере ртф файл):
    Creating Word file using Office Open XML
    Take the Pain out of Creating Word Documents by Using C# and XML Creating MS Word Document using C#, XML and XSLT

    А вот то что нужно.


    Для связи [Mail]
    • Предложено в качестве ответа I.Vorontsov 4 марта 2010 г. 7:30
    • Помечено в качестве ответа I.Vorontsov 17 марта 2010 г. 8:13
    24 февраля 2010 г. 13:11
  • XPathDocument xpathDocument = new XPathDocument(Path.Combine(Application.StartupPath, "word.xml"));
                XPathNavigator navigator = xpathDocument.CreateNavigator();
    
                XmlNamespaceManager namespaceManager = new XmlNamespaceManager(navigator.NameTable);
                XPathNodeIterator iterator = navigator.Select("//pkg:part", namespaceManager);
    
                Package pkg = Package.Open(Environment.CurrentDirectory + @"/abc.docx", FileMode.Create);
    
                while (iterator.MoveNext())
                {
                    Uri partUri = new Uri(iterator.Current.GetAttribute("name", "http://schemas.microsoft.com/office/2006/xmlPackage"), UriKind.Relative);
    
                    if (pkg.PartExists(partUri))
                        pkg.DeletePart(partUri);
    
                    PackagePart part = pkg.CreatePart(
                                        partUri
                                        , iterator.Current.GetAttribute("contentType", "http://schemas.microsoft.com/office/2006/xmlPackage"));
    
                    string a = iterator.Current.InnerXml
                        .Replace("<pkg:xmlData xmlns:pkg=\"http://schemas.microsoft.com/office/2006/xmlPackage\">", "")
                        .Replace(@"</pkg:xmlData>", "");
                    byte[] buffer = Encoding.UTF8.GetBytes(a);
                    part.GetStream().Write(buffer, 0, buffer.Length);
    Выдаёт ошибку "Namespace prefix 'pkg' is not defined." чего ему нехватает?
    • Помечено в качестве ответа I.Vorontsov 17 марта 2010 г. 8:13
    • Снята пометка об ответе I.Vorontsov 17 марта 2010 г. 8:13
    25 февраля 2010 г. 9:20
  • Решил проблему добавлением Namespace в XmlNamespaceManager  
    namespaceManager.AddNamespace("pkg", "http://schemas.microsoft.com/office/2006/xmlPackage");
    Теперь осталась только одна проблема. Данный код преоброзует любой файл в Word. Но мне надо производить конвертацию и Excel  файлов. Выбор типа должен производится автоматически. Есть ли способ как автоматически определять тип файла который хранится в виде XML? 
    25 февраля 2010 г. 11:17
  • Данный код переделывает в файл docx  что надо переделать чтобы он делал  doc?
    26 февраля 2010 г. 8:21
  • Данный код переделывает в файл docx  что надо переделать чтобы он делал   doc?

    Попробуйте используя Microsoft.Office.Interop.Word WdSaveFormat сохранить документ в формате doc.

    Для связи [Mail]
    • Предложено в качестве ответа I.Vorontsov 4 марта 2010 г. 7:30
    • Помечено в качестве ответа I.Vorontsov 17 марта 2010 г. 8:13
    26 февраля 2010 г. 12:32