Tag: office interop

如何在Excel Interop程序集14和15中获取页面高度和宽度?

我想获得一个Excel工作表的页面的高度和宽度,所以我可以创build一个与页面大小相同的位图。 我正在使用以下互操作程序集: Microsoft.Office.Interop.Excel版本14 和 Microsoft.Office.Interop.Excel版本15 在这个使用互操作程序集版本11的示例中 ,在Worksheet类/接口的PageSetup属性上都有一个PageWidth和PageHeight 。 但是,在我使用的程序集版本中,没有这样的属性。 https://msdn.microsoft.com/en-us/library/office/microsoft.office.interop.excel.pagesetup_members.aspx 如何获得工作表的所有页面的页面高度和宽度? 或者它们现在是不同的,我必须迭代Worksheet.PageSetup.Pages集合中的每个页面? 如果我只想将工作表的标题设置为大小等于页面高度和宽度的图像,我该怎么办?

有没有一种方法来改变使用VBAmacros代码优秀所有表中的Excel图表标题?

我试图用excel VBAmacros函数去编辑约72页的图表标题,但问题是,如果excel表格在跨networking共享的情况下,并且有时Excel中的VBAmacros被禁用,excel表格的macros将被禁用工作表不工作。 所以根据这里find的解决scheme: 是否有一种方法来添加VBAmacros代码的Excel? 我做了下面的代码来改变标题,但它不按预期工作。 var newStandardModule = xlWorkBook2.VBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule); var codeModule = newStandardModule.CodeModule; var lineNum = codeModule.CountOfLines + 1; var macroName = "ReplaceAll"; var codeText = "Sub " + macroName + "()" + "\r\n"; codeText += " For Each sh In Worksheets \r\n For Each ch In sh.ChartObjects \r\n If ch.Chart.HasTitle Then \r\n ch.Chart.ChartTitle.Text = […]

C#Microsoft.Office.Interop.Excel.Range.CopyPicture在一些计算机上工作,但不在其他人上

我试图将所选Excel范围的图片复制到剪贴板,并在我的GUI上显示该位图。 我有这个方法来获取位图: using Excel = Microsoft.Office.Interop.Excel; public static Bitmap CopyPicture(ref Excel.Range range) { System.Threading.Thread.Sleep(1000); //Google told me… range.Select(); //…that these lines are possible fixes. range.Copy(); //They aren't. try { range.CopyPicture(Excel.XlPictureAppearance.xlScreen, Microsoft.Office.Interop.Excel.XlCopyPictureFormat.xlBitmap); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } IDataObject data = Clipboard.GetDataObject(); if (data != null) { if (data.GetDataPresent(DataFormats.Bitmap)) { Bitmap map = (Bitmap)data.GetData(DataFormats.Bitmap, true); […]

添加选项“自动返回”到我的单元格C#

我想添加选项“自动返回”(在法语“retour automatiqueàla ligne”)到我的Excel文件中的所有活动单元格。 现在我已经尝试了很多东西,但我找不到这个选项… 你能帮我吗? 这是我有什么: using Excel = Microsoft.Office.Interop.Excel; Excel.Application app = new Excel.Application(); wb = app.Workbooks.Open(PathWrite.Replace(".csv", ".xlsx"), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Excel._Worksheet workSheet = app.ActiveSheet; for (int x = 1; x <= 7; x++) { Excel.Range range = workSheet.Columns[x]; range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; range.HorizontalAlignment […]

Excel Interop – 在图表中隐藏类别

我正在寻找一种方法来隐藏/禁用图表上的某些类别。 (Y轴) 这是如何与filter一起工作的: 有谁知道我可以用.NET Interop做到这一点?

无法在控制台应用程序中写入或读取Worksheet.CustomProperties

在我的控制台应用程序中,我试图写一些东西,并从Excel工作表的CustomProperties中读回来。 我有一个参考Microsoft.Office.Interop.Excel v14程序集。 在调用firstWorksheet.CustomProperties.Add方法的行firstWorksheet.CustomProperties.Add ,我得到一个HRESULT 0x800A03ECexception。 以下是相关的代码位: static void WriteToExcelCustomDocumentProperties( string excelFile, string outputFolder, string propertyName, object propertyValue) { excel::Application excel = null; Workbook workbook = null; Worksheet firstWorksheet = null; try { excel = new excel::Application(); workbook = excel.Workbooks.Open(excelFile); firstWorksheet = workbook.Worksheets[1] as Worksheet; firstWorksheet.CustomProperties.Add(propertyName, propertyValue); var outputFilePath = GetOutputFilePath(excelFile, outputFolder); workbook.SaveAs(outputFilePath); } catch(Exception […]

C#互操作Excel问题

我已经坚持了近一个星期,非常感谢你提前。 我创build了一个简单的组件来使用Interop将报告导出到Excel。 我遇到了一个700K的行信息,我的Excel崩溃了32位安装,所以在深入了解这个问题之后,解决办法是将Office更改为64位版本,所以我做了。 我的应用程序在Win10 64位/ Office 64位/ 16 Gb RAM / Core i7处理器(700K行信息)上运行良好, 但是当我尝试在Win7 64位/ Office 64位/ 32 Gb RAM / Core i7处理器(700K行信息)上使用相同的应用程序时,应用程序崩溃,出现以下错误: Microsoft Excel不能访问文件'\\ computerName \ templates \ template.xlsb'。 有几个可能的原因: ?文件名或path不存在。 •该文件正在被另一个程序使用。 ?试图保存的工作簿与当前打开的工作簿具有相同的名称。 请注意,该path是同一台计算机(Win7之一)中的共享文件夹,授予权限,文件存在于该文件夹中。 有什么想法发生了什么?

保存Excel将date格式更改为OADate

我试图修复date格式问题,同时debugging代码,date格式是正确的,并导出正确的,但是当应用程序在服务器上,date来与OADate格式(例如:45000,334424)。 我已经在代码中进行了一些转换,将OaDate转换为正常的date,但是它仍然不起作用。 看来问题可能是保存excel文件。 也许一些参数是错误的或任何桌面configuration,如果你有任何的build议,我会高兴地尝试一下, 谢谢 excelWorkbook.SaveAs(outputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

当从WinForms打开一个WPF窗口奇怪的行为

当从Excel插件显示一个WPF窗口时,我遇到奇怪的行为,每当我用myWindow.Show()而不是myWindow.ShowDialog()显示它。 到目前为止,在使用后者时一切都很好。 但是,能够显示一个窗口,这样用户就可以同时与Excel进行交互 – 也就是我期望从Show()获得的行为。 问题在于,我的表单中的控件开始非常快地performance得非常奇怪。 ComboBox下拉列表立即折叠,并且文本框input最终在Excel工作表中选中的任何单元格处于活动状态。 我注意到,使用ShowDialog ,Snoop能够附加到我的窗口,而使用Show,我得到一个错误,等于“找不到要附加的PresentationSource”。 但是,我不是完全确定这是否相关。 显然,一个解决scheme是停止从WinForms直接显示WPF窗口; 我期望这个问题很大程度上消失,如果我改变我的窗口到一个UserControl,并把它放入一个ElementHost 。 不过,如果可以,我宁愿避免。 目前的代码(大致) public void DoOpenWindow(Office.IRibbonControl button) { var myWindow = new myWindow(); // This hasn't addressed the issue, though may be sensible to include: //ElementHost.EnableModelessKeyboardInterop(myWindow); // This *also* didn't work, and essentially set my window to // be always on top of […]

将Excel公式转换为不同的语言环境/语言

比方说,我有一个string表示一个在德语Excel (仅)中有效的公式: =SUMME(B1; C1) 有没有一种方法可以将这样的公式转换为Excel的当前语言环境(或者任何select的语言),假设input公式使用明确的语言,例如使用C#代码的德语? 预期的英文输出是: =SUM(B1, C1) 正如你所看到的,它主要归结为replace函数名称/关键字与他们的翻译对应,但这可能需要一些公式parsing是完美的。 请注意,在Excel中,Excel已经独立存储公式语言。 同一个Excel工作表可以用任何语言打开和编辑。 问题是,input公式必须使用当前语言,否则将无效(!)。 没有这样的东西可以粘贴到Excel的任何语言的通用公式,它将工作完全一样。 甚至不用英文写作。 我不需要像“Excel公式到C#代码转换器”那样的东西,而是一种将当前的公式语言,目标语言和公式作为input的手段,并产生有效的目标语言公式。 这是一个类似的问题,但使用VBA代码。