更改Excel Interop的语言环境

时间:2019-01-22 08:51:29

标签: c# excel automation office-interop excel-interop

我正在尝试使Excel自动化以将Excel文件保存为PDF,但是我需要在运行时将Excel文件的语言环境更改为满足编号和日期格式的要求。

到目前为止,我所尝试的是设置执行Interop的线程语言环境,但是该方法不起作用:Excel文件中没有任何更改,该语言环境仍然是Windows操作系统的语言环境。

我需要在运行时更改语言环境。我正在为我的公司构建一个Excel到pdf转换器,以允许工作人员提交他们的Excel文件。将在其上安装转换器的Windows设置为默认的美国英语语言环境。问题是,某些Excel文件是在非美国英语语言环境中创建的,其中应保留数字和日期格式。例如,我有一个使用立陶宛语区域设置创建的Excel文件,其日期格式为2019-01-23。如果将文件提交给具有美国英语语言环境的系统上的转换器,则日期将在PDF文件中更改为01/23/19。

我的想法是允许工作人员与区域设置一起提交Excel文件以保留日期和数字格式。

剩下要解决的唯一问题是如何动态更改Excel Interop区域设置?

        var theNewThread = new Thread(() =>
        {                
            Excel(@"C:\Projects\TestFiles\test-locale.xlsx", @"C:\Projects\_temp\excel.pdf");                
        });
        theNewThread.CurrentCulture = new CultureInfo("pt-BR");
        theNewThread.CurrentUICulture = new CultureInfo("pt-BR");
        theNewThread.Start();

              private static void Excel(string inFilePath, string outFilePath)
        {           

            var application = new Microsoft.Office.Interop.Excel.Application();

            application.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;

            var workbook = application.Workbooks.Open(inFilePath, ReadOnly: Microsoft.Office.Core.MsoTriState.msoTrue);


            try
            {
                workbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, outFilePath);
            }
            finally
            {
                if (workbook != null)
                {
                    workbook.Close();
                }

                application.Quit();
            }
        }

0 个答案:

没有答案