XML в Excel (2007 г.) Идеи с использованием Windows XP и C#.Net

StackOverflow https://stackoverflow.com/questions/78233

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");

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

Другие советы

Если вы вставите следующее во вторую строку вашего XML, Windows будет открыта с помощью Excel.

<?mso-application progid="Excel.Sheet"?>

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

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

Заранее извиняюсь за подключение сторонней библиотеки, и я знаю, что она не бесплатна, но я использую ФлексСел Студия от программного обеспечения TMS.Если вы хотите сделать больше, чем просто выгрузить данные (форматирование, динамические перекрестные таблицы и т. д.), это работает очень хорошо.Используя его, мы генерируем сотни отчетов в неделю.

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

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

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));
            }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top