Tag: 互操作

在服务器上安装没有Office的Office Interops

我正在使用Excel Interop更改Excel单元格。 我已经尝试了许多开源解决scheme,但是在阅读时文件已损坏。 所以我坚持使用Excel Interop。 在服务器上开发时,我遇到了这个问题: Could not load file or assembly 'Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 因此,我想在我的服务器上安装Office互操作: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=18346 : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=18346 displaylang=en& http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=18346 但是,当我安装它,我得到这个问题: “请在安装本产品之前安装Microsoft Office 2007” 我的问题是:是否有可能在服务器上安装没有office 2007的interop? 提前致谢。

Excel Interop货币格式

我试图在Excel中格式化一个单元格到货币格式。 所以我进入excel,logging一个macros,把普通单元格转换为货币格式,看一下vb脚本,看看它输出如下: NumberFormat =“$#,## 0.00” 所以我采取这种格式,并将其粘贴到我的代码中,它的工作范围,即时获取货币字符之前,我的Excel表中的值。 然而,单元格的格式仍然是一个数字,excel在单元格的左下angular放置了一个小小的绿色三angular形,告诉我这个格式是不正确的(它应该是货币,但是它的编号是数字)有什么办法在C#中实际设置单元格为“货币”格式? 谢谢

如何打开Excel文件而不locking它?

我有一个构buildExcel报表的stream程,然后为用户打开。 问题是,如果有人将文件打开,它将保持locking状态,并且只有第一个人退出Excel文件时,其他人才能构build报表。 有没有办法打开一个Excel文件而不locking它,使用Process.Start或Microsoft的Interop.Excel库? 每次运行报表时,我都使用Interop库来构build文件,并将其作为静态文件名保存在运行此应用程序的共享networking文件夹中 using Excel = Microsoft.Office.Interop.Excel; … xlsBook.SaveAs(newFileName, Excel.XlFileFormat.xlWorkbookNormal); 然后使用Process.Start打开文件 Process.Start(newFileName);

用excel.interopreplaceexcel中的单元格值

我想扫描一个Excel工作表,并用零代替社会安全号码的任何事件…我想这样做使用Excel.Interop,如果可能的话,但我打开任何东西在这一点上…这里是我的一些代码…在过去的几个月里,我在桌子上敲着头… //获取范围并将其转换为stringvariables Excel.Range _range =(Excel.Range)_excelApp.get_Range(“A1:K1”,Type.Missing); / /转换我们的细胞在我们的范围内的价值 //到stringvariables string myString = _range.Cells.Value2.ToString(); //匹配任何SSN,例如1236780909,123-33-2445 if(Regex.IsMatch(myString,@“\ b \ d {3} \ b \ d {2} \ b \ d {4}”)); { _range.Cells.Value2 = replaceSSN; } //以新名称保存我们的工作簿并创build备份 _ExcelWorkbook.SaveAs(“Results.xls”,Type.Missing,Type.Missing,Type.Missing,Type.Missing,true,Excel.XlSaveAsAccessMode.xlNoChange,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Type.Missing); //closures工作簿 _excelWorkbook.Close(false,Type.Missing,Type.Missing); //发送退出信号到应用程序 _excelApp.Quit(); //报告成功 MessageBox.Show(“File masked successfully。”,“Mask Data”,MessageBoxButtons.OK); //释放内存 //System.Runtime.InteropServices.Marshal.ReleaseComObject(_excelApp); //将标签更改为空白 lblActivity.Text =“”; }

C#:如何查找进程是否被当前的应用程序调用?

有什么方法可以确定当前应用程序是否调用了进程? 我正在打开和Excel互操作过程,处理文件等,之后,我只想closures我调用的这个Excel进程。 像这样的东西: Process[] pProcess = System.Diagnostics.Process.GetProcessesByName("Excel"); foreach (var process in pProcess) { if (process.Parent == "MyApp.exe") process.Kill(); }

使用C#中的互操作以独占模式打开一个excel文件

在我的应用程序中,我希望能够打开一个已经存在的excel文件,并向这个文件添加信息。 我使用Microsoft Interop库。 我注意到,如果您使用添加,然后Saveas创build一个新的电子表格,您可以将文件设置为独占模式,直到您closuresExcel应用程序。 但是,我还没有find一种方法来打开一个现有的文件时做同样的事情。 我想这样做的原因是因为,如果我打开Excel文件,而我的应用程序是打开的,那么我得到一个exception。 我认为,当我用excel打开excel文件时,它是以独占模式自动打开的。 我虽然打开文件,然后使用saveas,但它没有奏效。 private object missing=Type.Missing; workbook = workbooks.Open(excelfilename,missing, false, missing, missing, missing,missing,missing,missing,missing,false, missing,missing, missing, missing); workbook.SaveAs((String)excelfilename, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, Excel.XlSaveConflictResolution.xlLocalSessionChanges, missing, missing, missing, missing); 我在代码后面得到exception: Excel.Range testrange = sheet.get_Range(rangetext); 我得到的exception是一个COMException,“从HRESULTexception:0x800401A8”。

使用COM Interop复制Excel工作表失去单元格颜色

我已经尝试过使用COM Interop合并工作表的各种方法。 这是我最后的结果(为了简洁,省略了不必要的代码): public bool CombineWorkBooks(string exportFilePath, IEnumerable<string> filesToMergeFrom, bool deleteRawFiles) { var success = false; Excel.Application xlApp = null; Excel.Workbook mergeToWorkbook = null; Excel.Workbooks mergeToWorkbooks = null; Excel.Sheets mergeToWorksheets = null; Excel.Worksheet defaultWorksheet = null; try { if (filesToMergeFrom == null) { return false; } xlApp = new Excel.Application { DisplayAlerts = false, Visible […]

使用Microsoft.Office.Interop保存用C#创build的文件

我有这个代码将创buildExcel文件和工作表,然后插入相同的值。 我正面临的问题是,我无法保存文件的名称给十分。 我用SaveAs但没有工作: wb.SaveAs(@"C:\mymytest.xlsx", missing, missing, missing, missing, missing, XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing); 这行代码会给我这个错误: Microsoft Office Excel不能访问文件“C:\ A3195000”。 有几个可能的原因: ?文件名或path不存在。 •该文件正在被另一个程序使用。 ?试图保存的工作簿与当前打开的工作簿具有相同的名称。 请咨询解决这个问题。 这里是我的代码: private void button1_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); if (xlApp == null) { MessageBox.Show("EXCEL could not be started. Check that your office installation and project […]

如何在VB.net应用程序中获取最新版本的MS Excel?

我在我的VB.net应用程序中使用Excel Interop。 我正在使用Microsoft Office 11.0 Object Library和Microsoft.Office.Interop.Excel进行Excel自动化。 这两个DLL都是用于Office 2003的。我的问题是,如何让我的项目引用最新版本的MS Office(比如说Office 2010)

单击确定后,Excel打印对话框将打开不需要的Excel实例

我正在使用xlApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show()向用户显示一个打印对话框,以打印以编程方式创build的Excel工作簿的内容。 打印部分工作正常后用户点击确定。 但是,除了打印之外,该程序还会打开并显示Excel的一个实例。 这不是打印预览,而是打开并显示给用户的实际Excel文档。 我的目标是向用户显示打印对话框,允许他们打印而不显示Excel。 我在这里寻找努力寻找某种方法或参数来禁用打开Excel。 不幸的是,我所发现的是我可以提供.Show()有30个参数,但不是哪个参数对应于什么设置。 我还没有find任何东西,我的谷歌技术似乎没有今天我失败。 更新 :我的代码中的“Excel”是一个别名: using Excel = Microsoft.Office.Interop.Excel; 我能够find内置的对话框参数列表 。 看“xlDialogPrint”我猜这些是进入.Show()的参数。 但是,这个列表中没有任何东西似乎阻止Excel打开。 另一个更新 :最简单的代码来重现行为 Excel.Application xlApp; Excel.Workbook xlWB; Excel.Worksheet xlWS; xlApp = new Excel.Application(); xlWB = xlApp.Application.Workbooks.Add(); xlWS = xlWB.Sheets[1]; xlWS.Cells[1][1] = "TEST"; xlApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show();