簡體   English   中英

XML轉換為Excel(2007)使用Windows XP和C#.Net的想法

[英]XML to Excel (2007) Ideas using Windows XP, and C#.Net

我有一個數據集,我已將其修改為xml文檔,然后使用xsl工作表將其轉換為Excel xml格式,以允許從應用程序以編程方式打開數據。 我遇到了兩個問題:

  1. Excel不是打開Excel文件的默認Windows應用程序,因此,運行Program.Start(“ xmlfilename.xml”)時,將打開IE,並且XML文件的可讀性不高。

  2. 如果將文件重命名為.xlsx,則會收到警告,“這不是excel文件,您要繼續嗎”。 這對於客戶而言並不理想。

理想情況下,我希望Windows在Excel中打開文件而無需修改用於打開Excel文件的默認操作系統設置。 Office互操作是可能的,但對於此應用程序似乎有點過大。 有誰有任何想法使這項工作嗎?

該解決方案在.Net / C#中,但是我對創建干凈解決方案的其他可能性持開放態度。

如果將以下內容插入XML的第二行,它將指示Windows使用Excel打開

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

如果將文件另存為XML-Excel的擴展名xlsx,該怎么辦?

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

話雖如此,您仍然會收到消息框。 我想您可以使用Interop,但是我不確定它對您的效果如何。

希望這可以幫助。

MSDN中的OpenXML- http://msdn.microsoft.com/zh-cn/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));
            }

如Sam所述,xlsx文件擴展名可能是一個不錯的選擇。 但是,除了將XML文件另存為xlsx之外,還涉及更多的工作。 xlsx實際上是一個zip文件,在文件夾內有許多xml文件。 我在這里找到了一些不錯的示例代碼,盡管我沒有親自嘗試 ,但似乎可以給出一些很好的解釋。

預先為插入第三方庫而道歉,我知道它不是免費的,但是我使用TMS Software的FlexCel Studio 如果您想做的不僅僅是轉儲數據(格式設置,動態交叉表等),它會很好地工作。 我們每周使用它生成數百份報告。

FlexCel接受強類型的數據集,它可以根據關系對數據進行分組,並且生成的Excel文件看起來比從Crystal Reports excel導出中獲得的文件干凈得多。 我已經完成了Crystal Reports和OLE自動化的工作。 FlexCel的價格為125美元(歐盟)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM