XML в Excel (2007) Идеи с использованием Windows XP и C # .Net - PullRequest
2 голосов
/ 17 сентября 2008

У меня есть набор данных, который я изменил в документ xml, а затем использовал лист xsl для преобразования в формат Excel xml, чтобы позволить программно открывать данные из моего приложения. Я столкнулся с двумя проблемами с этим:

  1. Excel не является приложением Windows по умолчанию для открытия файлов Excel, поэтому при запуске Program.Start ("xmlfilename.xml") IE открывается, а файл XML не очень читаемый. *

  2. Если вы переименуете файл в .xlsx, вы получите предупреждение: «Это не файл Excel, вы хотите продолжить». Это не идеально для клиентов.

В идеале, я бы хотел, чтобы Windows открывала файл в Excel, не изменяя настройки ОС по умолчанию для открытия файлов Excel. Офисное взаимодействие возможно, но кажется немного излишним для этого приложения. У кого-нибудь есть идеи сделать эту работу?

Решение находится в .Net / C #, но я открыт для других возможностей создать чистое решение.

Ответы [ 6 ]

4 голосов
/ 17 сентября 2008

Если вы вставите следующее во 2-ю строку вашего XML, это заставит Windows открыться в Excel

<?mso-application progid="Excel.Sheet"?>
1 голос
/ 17 сентября 2008
Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");

При этом вы все равно получите окно сообщения. Я полагаю, что вы могли бы использовать Interop, но я не уверен, насколько хорошо он будет работать для вас.

1 голос
/ 17 сентября 2008

Что если вы сохраните файл как xlsx, расширение для XML-Excel?

0 голосов
/ 02 апреля 2013

Надеюсь, это поможет.

OpenXML в MSDN - http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.openxml(v=office.11).aspx

using Excel = Microsoft.Office.Interop.Excel;

string workbookPath= @"C:\temp\Results_2013Apr02_110133_6692.xml";

            this.lblResultFile.Text = string.Format(@" File:{0}",workbookPath);
            if (File.Exists(workbookPath))
            {
                Excel.Application excelApp = new Excel.Application();
                excelApp.Visible = true;
                Excel.Workbook excelWorkbook = excelApp.Workbooks.OpenXML(workbookPath, Type.Missing, Excel.XlXmlLoadOption.xlXmlLoadPromptUser);
            }
            else
            {
                MessageBox.Show(String.Format("File:{0} does not exists", workbookPath));
            }
0 голосов
/ 17 сентября 2008

Заранее извиняюсь за подключение сторонней библиотеки, и я знаю, что это не бесплатно, но я использую FlexCel Studio от TMS Software. Если вы хотите делать больше, чем просто выводить данные (форматирование, динамические кросс-таблицы и т. Д.), Это работает очень хорошо. Мы генерируем сотни отчетов в неделю, используя его.

FlexCel принимает строго типизированные наборы данных, он может группировать данные в соответствии со связями, а сгенерированный файл Excel выглядит намного чище, чем то, что вы можете получить из экспорта Crystal Reports Excel. Я сделал отчет о кристаллах и автоматизацию OLE. FlexCel - это кража в 125 долларов США.

0 голосов
/ 17 сентября 2008

Как сказал Сэм, расширение файла xlsx, вероятно, является хорошим путем. Тем не менее, это больше, чем просто сохранение XML-файла как xlsx. На самом деле xlsx - это zip-файл с кучей xml-файлов внутри папок. Я нашел хороший пример кода здесь , который, кажется, дает некоторые хорошие объяснения, хотя я лично не пробовал.

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