Tag: windows services

如何从Windows服务运行Excel VBA代码

我想从我的Windows服务运行一些Excel VBA代码。 该服务正在使用fileSystemWatcher来监视要添加的xml文件的目录。 一旦添加了一个文件,xml文件的内容被反序列化为对象属性。 在这个阶段,我想打开一个excel文件,并将这些值传递给某些单元格,并从该工作簿中运行vba代码。 我从Windows窗体应用程序完美的工作,但我不能从我的Windows服务应用程序工作。 我附加了一个debugging器到应用程序来试着看看发生了什么,但没有错误抛出,所有的步骤都成功完成。 我知道Windows服务不支持打开MS Office文件,因为与用户界面和用户权限进行交互时存在问题。 但我正在寻找任何方式来获得这个vba代码从服务运行的工作。 我正在使用Windows 7家庭高级版32位,我有我的帐户我的服务设置为LocalSystem.This是我使用的代码: private void FSWatcherTest_Created(object sender, System.IO.FileSystemEventArgs e) { Trade t; XmlSerializer serializer; XmlReader reader; XmlWriter writer; string filePath = @"C:\Inbox\TradeInfo.xml"; serializer = new XmlSerializer(typeof(Trade)); reader = XmlReader.Create(filePath); t = (Trade)serializer.Deserialize(reader); reader.Close(); string path=@"C:\Windows\System32\config\systemprofile\Desktop\TwsDde.xls"; oXL = new Microsoft.Office.Interop.Excel.Application(); oXL.Visible = true; oXL.DisplayAlerts = false; mWorkBook […]

如何在指定的terminal会话帐户上打开Excel / Powerpoint,而不是使用最低ID的默认值?

大家好, 我有一个应用程序(Windows服务/ C#)启动EXCEL和POWERPOINT,并使用系统剪贴板复制这两个应用程序之间的数据。 应用程序在多个活动terminal会话的服务器上运行。 默认情况下,Office应用程序在会话ID最低的会话中启动。 COM对象 我使用COM对象在ms-service和office应用程序之间进行通信。 下面的代码是我如何运行EXCEL的一个例子。 xlApp = new Microsoft.Office.Interop.Excel.Application(); xlWorkBook = xlApp.Workbooks.Open("path_to_my_file", 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); multithreading – 并行会话 ATM应用程序正在单线程模式下运行。 我打算同时运行两个…问题是我只有1个剪贴板可用于通信目的。 为了获得另一个,我打算在2个独立的窗口会话上运行整个应用程序。 在这种情况下,我会有2个独立的单线程解决scheme。 将有2个服务的副本,运行自己的办公应用程序,我会有2个单独的剪贴板供我使用。 问题 有一件事尚未解决 – 我不知道如何强制这些办公应用程序运行在不同的用户会话。 从我所看到的情况来看,他们总是在一个身份证号码最低的sesison中跑步。 我发现了类似的问题 – 在terminal服务器上,服务如何在用户会话中启动一个进程? ,但是,运行一个进程并不像通过COM对象运行Office应用程序那样。 编辑:我注意到,如果我打开EXCEL不是从WINDOWS服务,而是从WINDOWS FROMS应用程序,EXCEL行为不同。 它不再在用户会话中以最低ID开始,而是在WINDOWS FORMS APP正在运行的相同帐户上打开。 这不知何故解决了我的问题,我将能够运行2个并行进程:)

如何获得一个Windows服务VB.net来访问一个Excelmacros

我已经看了几个stackoverflow文章Excel自动化Windows服务和如何从Windows服务运行Excel VBA代码 所以答案似乎是不能做到的。 我有一个xlsm文件(Microsoft Excelmacrosfunction工作表),它有一个macros。 它只是打开一个.csv文件,查看循环,并输出一个Excel文件。 我有5或6这些(每个处理每个客户端的csv文件不同),当我们有1-2时,手动运行进程来获得Excel输出没有问题。 我想简单地自动化这个过程。 我目前有一个服务,生产csv,这似乎是最好的地方做到这一点。 该服务在服务器上运行,该服务查看数据库并查看是否需要生成csv(或其他报告)。 那么有什么改变了,我现在可以在一个服务中擅长自动化吗? 怎么样? 如果没有任何build议,该怎么办?

ChartObject.CopyPicture上的未指定错误(从HRESULTexception:0x80004005(E_FAIL)))

我正在使用Microsoft.Office.Interop.Excel(Excel 2010 64 BIT),使用部署在Windows Server 2012 64 BIT上的Windows Service将Excel图表复制到Power Point。 在configuration相同的本地机器上工作正常,但是在生产服务器上部署。 它给出了一个错误,未指定的错误(exception从HRESULT:0x80004005(E_FAIL))这个错误代码时,它复制图表对象,如果我复制数据工作正常。 问题是与chartobject.CopyPicture函数。 我GOOGLE了很多,但什么也没给。

错误E_ACCESSDENIED在C#中Microsoft.Office.Interop.Excel()

我创build了一个重复更新相同的Excel文件的Windows服务 。 在运行Windows服务时,我收到以下错误 : 错误消息检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80070005访问被拒绝。 (从HRESULTexception:0x80070005(E_ACCESSDENIED))。 下面这行代码引发了这个错误: ExcelApp = new Microsoft.Office.Interop.Excel.Application(); 有没有解决这个问题? 我遵循以下SO链接中提到的步骤,但没有帮助我克服这些错误。 我试着从其他几个问题的解决scheme,没有一个为我工作。

如何使用ASP.NET的Excel中的数据更新MYSQL数据库?

我有一个Excel文件,每10秒更新一次自动化过程。 我需要在位于远程服务器上的MY-SQL数据库中更新excel数据。 我怎么做? 我想到了以下选项:1)每隔11秒钟,一个Excelmacros将运行,并将“另存为”优于CSV文件。 (不知道这是否可以通过macros…只是想)2)这个CSV文件,我们将FTP到远程服务器使用Windows服务。 3)在远程服务器上,我们将parsingcsv文件和更新MYSQL数据库。 这个方法好吗? 或者你有更好的方法,需要更less的时间来更新数据库? 谢谢!

尝试使用Microsoft.Office.Interop.Excel.Workbooks.Open()打开Excel时exceptionHResult 0x800a03ec

如果我尝试在客户机上打开一个excel文件,就会抛出exception: Exception from HRESULT: 0x800A03EC 内部例外:(空) 堆栈跟踪: at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) at (own assembly) 这HResult是一个非常通用的错误,我找不到任何有用的信息。 我的设置: 在Windows服务中运行的WCF服务。 完全相同的安装程序正在其他三台机器上工作。 我可以排除的事情: 错误的path 文件不存在 文件已损坏 文件被写保护 我做的事情: 创build桌面文件夹,如下所示(第二个答案) https://social.msdn.microsoft.com/Forums/vstudio/en-US/4d6c383a-94eb-4898-9d22-aa4bb69be25b/ 给桌面文件夹“每个人”或“Jeder”权限(德文中的“Jeder”相当于“Everyone”) 用currenlty活动用户启动服务 […]

使用C#如何确定位于服务器上的Excel文件是否已经更新。 这个检查需要每24小时执行一次

到目前为止,我已经尝试了这个代码显示为1个文件的最后更新。 FileInfo fileInfo = new FileInfo(@"C:\Users\Desktop\test.xlsx"); DateTime lastWriteTime = fileInfo.LastWriteTime; Console.WriteLine(lastWriteTime); MessageBox.Show("test" + lastWriteTime); 我想知道如何可以每24小时自动运行一次,因为我需要根据文件系统检查多个文件夹的各种文件。 如何使它成为在后台运行的Windows服务。

Excel 2013 COM API将服务帐户下的ExportAsFixedFormat挂起

我有一个.NET Windows服务调用Excel 2013 COM API来导出PDF上的Excel文档,我已经试过这个代码与Windows服务运行在两个不同的域帐户,运行代码的机器上的本地pipe理员。 在我login到机器的个人帐户下,代码按预期执行。 在服务帐户下,这是一个活动目录帐户,没有login到机器的Excel文档被打开,但导出逻辑从不返回,当我停止服务时,服务打开的Excel实例保持打开状态。 这是我正在使用的代码: object paramMissing = Type.Missing; XlFixedFormatType paramExportFormat = XlFixedFormatType.xlTypePDF; XlFixedFormatQuality paramExportQuality = XlFixedFormatQuality.xlQualityStandard; bool paramOpenAfterPublish = false; bool paramIncludeDocProps = true; bool paramIgnorePrintAreas = false; object paramFromPage = Type.Missing; object paramToPage = Type.Missing; Workbook excelWorkBook = null; try { // Open the source workbook. excelWorkBook = excelApplication.Workbooks.Open(file, paramMissing, […]

某些Excel文件不能从共享path移动到SQL Server

我们有一个应用程序,Excel文件中的数据(存在于共享path中)移动到数据库。 在出现任何错误的情况下,通过将错误写入日志文件,文件移动到错误文件夹。它使用Windows服务进行操作。 有时文件没有任何错误仍然通过写入日志移动到错误文件夹External table is not in the expected format. 但同样的文件再次上传一次或多次,其移动到数据库没有任何错误。 Windows服务器中存在Windows服务,数据库和共享path。 这些年来应用程序运行良好。 但在最近几天,上述问题几乎每一个文件都在发生。 我们也安装了Microsoft 2003,2007,2012办公组件和访问引擎。 但问题仍然存在。 我提到下面的Windows服务代码。 请帮助。 提前致谢。 using System.IO; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.Data.SqlClient; using System.Data.OleDb; using System.Data.Common; namespace Impexp_Service { public partial class Service1 : ServiceBase { System.Timers.Timer […]