Tag: wpf

使用LINQ从System.Array转换为List <string>,需要保留空值

在我的项目中,我使用互操作连接(.NET 4.5之前的WPF应用程序)将2列转换为易于与List一起工作。 这里的问题在于我正在阅读的两列之一有很多空值。 大多数是空值; 并且select过程决定跳过它们而不是填充一个空值,所以现在剩下2个不等于X excel表单的2个不均匀的列(X在这里是1500左右,所以这个方法相当省时) ; Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(pathName, 0, true, 5,"", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); Excel.Range range = xlWorkSheet.UsedRange; range = xlWorkSheet.UsedRange.Columns[1]; System.Array myvals = (System.Array)range.Cells.Value; xmlData.AddRange(myvals.OfType<object>().Select(O => O.ToString()).ToList()); range = xlWorkSheet.UsedRange.Columns[2]; myvals = (System.Array)range.Cells.Value; xmlCode.AddRange(myvals.OfType<object>().Select(P => […]

如何杀死在C#中的Word / Excel文件的实例

我有两个文件demo1.docx,demo2.docx.When我将打开这两个文件,然后创build两个实例到应用程序部分中的任务pipe理器,并创build一个进程WinWord.exe到进程Section.When我杀了demo1.docx实例它自动杀死另一个实例,但我只想杀死那个实例demo1.docx。 目前我正在使用这个代码杀死实例 string instanceName="demo1.docx"; Process[] runingProcess = Process.GetProcesses(); for (int i = 0; i < runingProcess.Length; i++) if (runingProcess[i].MainWindowTitle.Contains(instanceName)) runingProcess[i].Kill();

在Visual Studio中closuresMicrosoft Excel工作表c#

我正在devise一个WPF应用程序,我打开一个Excel文件,然后写入一些数据,然后closures它。 现在我还需要发送电子邮件到我需要附加这个Excel文件的电子邮件地址。 但是,附加它会引发另一个进程使用该文件的exception。 我看着任务pipe理器,发现微软的excel在后台运行。 我寻找了几个可用的解决scheme,并编辑如下代码: xlWorksheet.SaveAs("C:\\Data.xlsx"); Marshal.FinalReleaseComObject(xlWorksheet); xlWorkbook.Close(); Marshal.FinalReleaseComObject(xlWorkbook); xlApp.Quit(); Marshal.FinalReleaseComObject(xlApp); 现在这似乎工作,因为它closures微软的Excel。 但是要花费很多时间才能结束。 有时它立即closuresexcel,但有时需要3-5分钟才能closuresexcel。 因为我需要在Excel中保存数据之后发送电子邮件,所以如何处理这种情况。 在我的应用程序中,用户将按下button,以下任务将会发生: 打开Excel表单 将数据保存到它。 closuresExcel表格 启动SMTP 添加电子邮件地址 附上Excel表格 发电子邮件 现在在附件中,因为excel在后台打开而失败,所以显示错误。 如何立即closuresExcel表格。 这个解决scheme有没有其他的select。

在wpf应用程序中读取excel文件内容

我想在我的C#,WPF应用程序中读取excel文件。 它运行在具有不同版本的Excel的不同版本的机器上(有些版本是excel-2003,有些版本是excel-2007版本,有些机器根本没有安装任何办公软件)。 我希望读取excel文件内容,而不pipe目标机器上是否安装有任何excel版本/软件包。 我目前使用Microsoft.Office.Interop.Excel从Excel文件中读取数据,但是在没有安装任何办公软件的目标计算机上运行我的应用程序,我的应用程序不起作用。 我该怎么做? 我正在做下面的方式,添加命名空间 using Excel = Microsoft.Office.Interop.Excel; 这里是方法的主体: Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.Range range; xlWorkBook = xlApp.Workbooks.Open(_filePath); List<string> Folders = new List<string>(); try { xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); range = xlWorkSheet.UsedRange; for (int cCnt = 1; cCnt <= range.Columns.Count; cCnt++) { Folders.Add(((range.Cells[1, cCnt] as Excel.Range).Value).ToString()); } } catch […]

如何使用DotNet EXE作为OLE对象

我想插入我的DotNet EXE应用程序在Excel表格就像一个OLE对象。 可能吗? 如果是的话,我们如何做到这一点。 在Excel 2003中,当我们点击Insert-> Object菜单项时,我们得到'Object'diloag。 这个dilaog的“Create New”选项卡包含varios OLE对象。 我想在此列表中显示我的DotNet exe应用程序,以便当我select并单击此对话框的“确定”button时,EXE应像其他列表中的OLE对象一样执行。 谢谢,阿米特

从数据网格复制时,不会出现中断字符

我有一个好奇的问题。 当我复制具有2个或更多组的空格的单元格(或一行)时,当我粘贴此空格replace为不分号(Alt + 160)。 更奇怪的是,如果我粘贴在Word上,然后从Word复制并再次粘贴到我的程序的空间返回,但如果我粘贴在Excel然后从Excel复制粘贴在我的程序的非破坏字符仍然存在。 显然,简单的方法不是我们的方式,我们需要复制/粘贴到/从Excel。 我可以控制我的应用程序引入这个字符,并用空格replace它,以避免任何人不会故意引入非破坏字符(从来不是一个好主意)。 但是我们使用VB 6.0中的另外一个应用程序来处理超过200个窗口,而且我没有老板的任何改变。 我debugging了我的代码,并且datagrid没有非中断字符。 复制后,剪贴板没有任何非中断字符。 如果我从文本框中复制相同的文本,则在粘贴时不会用空格replace空格。 这是我的任何datagrids的一列的axml: <DataGridTextColumn Header="Machine" CanUserSort="True" IsReadOnly="True" MinWidth="10" Width="*" MaxWidth="Infinity" Binding="{Binding Path=NOM_MAQ}"> <DataGridTextColumn.ElementStyle> <Style TargetType="{x:Type TextBlock}"> <Setter Property="ToolTip" Value="{Binding Path=NOM_MAQ}"/> <Setter Property="TextTrimming" Value="CharacterEllipsis"/> <Setter Property="TextWrapping" Value="NoWrap"/> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> 我尝试添加到DataGridTextColumn转换器: ClipboardContentBinding="{Binding Path=NOM_MAQ, Converter={StaticResource QuitNonBreakingConverter}}" class QuitNonBreakingConverter : IValueConverter { public object Convert(object value, Type targetType, […]

拖放从WPF应用程序到Excel

我有WPF应用程序由一些文本框和列表视图组成。 我想实现从我的应用程序到MS Excel单元格的拖放function。 我想从WPF应用程序拖动一些文本数据到Excel单元格。 我知道如何从Source实现Drag事件。 但是我不知道如何实现DragEnter,DragOver,DragLeave或Drop事件到Excel中。 这个你能帮我吗。 谢谢

在WPF控件中显示Microsoft Office文档

我正在开发一个WPF应用程序,允许用户浏览目录的内容。 我想要做的是,如果用户点击一个Microsoft Word或Excel文档,让文件显示在WPF应用程序中的视图控件(如滚动查看器或其他)。 我试图做一个全function于一身的文件查看器,所以用户不必打开单独的Word和Excel窗口。 用户不需要能够编辑文件,只需查看它。 另外,用户将在他们的计算机上安装Word和Excel。 这可能吗? 我正在阅读冲突的答案,似乎有一个假设,用户不一定安装Office。 在这种情况下,是的,他们将在他们的本地机器上安装Office。

加速使用WPF的文档自定义的Excel VSTO启动时间

我有一个有点复杂的Excel 2010文档定制。 此自定义还包括自定义任务窗格内的WPF用户控件和一些popup式控件。 问题是我的定制需要大约15秒的时间才能启动。 有没有好的技术来优化这个启动时间? 我的初始化代码如下所示: // Create a WPF app inside VSTO to configure resource dictionaries and display language _wpfApp = new System.Windows.Application(); // Load the resource dictionary var resources = System.Windows.Application.LoadComponent( new Uri("ModernCashFlow.WpfControls;component/Resources/CustomResources.xaml", UriKind.RelativeOrAbsolute)) as System.Windows.ResourceDictionary; // Merge it on application level _wpfApp.Resources.MergedDictionaries.Add(resources); // Set WPF's app language to system default – useful […]

从WPF数据网格复制excel兼容的数据到剪贴板

我将如何将数据放入WPF DataGrid行中的Excel兼容格式的剪贴板,可以粘贴在Excel表中?