Tag: wpf

从范围中排除一行

我正在做一个Excel的WPF项目。 在Excel表格中,我select了一个范围,如下所示: Range c1 = newSheet.Cells[3, 2]; Range c2 = newSheet.Cells[8, 10]; Range rng = (Range)newSheet.get_Range(c1, c2); 我需要删除,可以说,从这个范围内的第5行。 如何根据excel表中的索引从一个范围中排除一行?

C#Excel到TXT转换和格式化输出WPF

我有一个WPF应用程序目前有2个button,一个用于select文件和一个将选定的文件转换为.txt格式。 现在我需要让另一个button读取excel文件并格式化数据并创build一个.txt文件。 我的代码如下所示: using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow […]

将Dictionary <String,String>复制到Excel的剪贴板

我想写一个工具,它将比较两个string表,并find在一个,而不是其他的值。 我已经得到了应用程序,所以它正确得到所有这些值,我把它们存储在一个Dictionary<string, string>并使用它来显示它在我的XAML中的GridView。 然后我发现,你必须手动添加复制代码到GridView,所以我想我只是有一个button来复制字典的全部内容,但现在我有一个问题,当我试图将其复制到Excel它只产生一列的值,我需要的关键是一列和值是另一个。 这是我的复制代码到目前为止: if (ToTranslate.Count != 0) { var sb = new StringBuilder(); foreach (var item in ToTranslate) { sb.Append(item.Key + ", "); sb.AppendLine(item.Value); } System.Windows.Clipboard.SetData(DataFormats.Text, sb.ToString()); } 我已经尝试了很多其他的东西,如item.string,把它们放在方括号,仍然无法正常工作。 我也尝试修剪方括号,但这仍然无法正常工作。 我会认为它会拿起逗号作为一个分隔符,就像你打开一个csv时一样,但是没有。 我不知道这是否会有所帮助,但这是我的XAML <ListView ItemsSource="{Binding Results}"> <ListView.View> <GridView> <GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding Key}" /> <GridViewColumn Header="Text" Width="Auto" DisplayMemberBinding="{Binding Value}" /> </GridView> </ListView.View> </ListView>

将Excel中的十进制值复制到C#将导致只复制显示的值

我试图从Excel电子表格复制一些值到C#WPF应用程序。 我注意到,当我在Excel中select单元格,并将其复制到剪贴板,然后粘贴到WPF应用程序时,我得到显示的值不是真正的值,即考虑单元格的值为2.232323。 如果在“格式单元格”窗口中的Excel中,我只设置一个小数位,那么Excel将显示2.2。 如果现在我把它复制到WPF,那么我得到2.2而不是2.232323。 我注意到记事本做同样的事情。 有没有办法获得真正的价值? 我用来复制单元格的代码: DataObject o = (DataObject)Clipboard.GetDataObject(); string[] pastedRows = Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd(Environment.NewLine.ToCharArray()), Environment.NewLine);

从Excel VSTO项目打开WPF应用程序

我有用C#编写的VSTO Excel工具,我使用WPF窗体来显示一些数据。 WPF表单在一个不同的项目中,但与Excel VSTO项目在同一个解决scheme中。 如果我用Excel在同一个线程中打开WPF表单,它会以某种方式损坏Excel,并开始做一些奇怪的事情。 但是,如果我在不同的线程中运行WPF表单,一切正常。 所以下面的代码应该是OK的: if (app != null) { // When click the button again and WPF form is opened already, bring it on top. BringDatabaseToFront(); } else { t = new Thread(() => { app = new App(_synchronizationContext, currentCaller); App.ResourceAssembly = app.GetType().Assembly; app.InitializeComponent(); app.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose; /* Makes the thread support […]

将两个属性绑定到DataGridTemplateColumn文本框WPF MVVM

我想将两个属性绑定到包含TextBox的DataGridTemplateColumn。 我有一个名为HST的专栏。 在该列中,我希望用户input一个公式,当焦点离开时,或列不再处于编辑状态时,将显示该值,与MS Excel类似。 我有两个属性,我有公式存储以及我有公式存储的值。 public String SubTotal { get { String[] l_ComputeArr = l_HST.Split('='); if (l_ComputeArr.Length > 1) { DataTable dt = new DataTable(); try { var v = dt.Compute(l_ComputeArr[1], ""); l_SubTotal = v.ToString(); } catch { } } return l_SubTotal; } set { if (l_SubTotal != value) { l_SubTotal = value; } RaisePropertyChanged("SubTotal"); […]

Devexpress DXGrid – 打印/导出自定义单元格样式

我是DE控制中的一个新手,我仍然在评估产品,我有一个小问题。 我有一个网格有两列,其中backcolors是由logging状态(例如,如果状态是1,单元格的背景颜色必须是红色)定义。 对于collumn的CellStyle,我使用自定义的customCellStyle,一切正常。 <Style x:Key="customCellStyle" BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=CellStyle}}" TargetType="{x:Type dxg:CellContentPresenter}"> <Setter Property="Background"> <Setter.Value> <MultiBinding> <MultiBinding.Converter> <local:StatusToBackroundColorConverter /> </MultiBinding.Converter> <Binding Path="Column" RelativeSource="{RelativeSource Self}" /> <Binding Path="Data.RowHandle.Value" /> <Binding Path="Data.DocumentStatusId" /> </MultiBinding> </Setter.Value> </Setter> 但是,当我试图完成导出或打印网格视图,它根本不工作。 虽然,它的作品,如果单元格的背景颜色是硬编码,我不能让它与绑定工作。 代码如下所示: 为了简单起见,我没有使用转换器。 StatusBackColor有一种types的画笔。 <Style x:Key="customPrintCellStyle" BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintCellStyle}}" TargetType="dxe:TextEdit"> <Style.Setters> <Setter Property="dxp:ExportSettings.TargetType" Value="Panel"/> <Setter Property="DisplayTemplate"> <Setter.Value> <ControlTemplate TargetType="dxe:TextEdit"> <dxe:TextEdit Text="{Binding Value}" […]

使用C#获取一系列Excel单元格中的特定文本

我正在与Excel中的WPF应用程序工作。 在那个应用程序中,我有一个名称为Bulk。 该列包含两个选项,如YES和NO作为文本。 现在我需要指定字体为红色的YES选项和正常黑色的NO选项。 我得到了特定列的范围。 但我不知道我怎么得到YES选项和NO选项分开,也需要根据需要颜色的选项。 在这里我提到了我的代码: foreach(Range Value in range.cells) { ??????? ??????? } 任何人都可以告诉我这个的解决scheme。 我该如何进行这个过程。 提前致谢。

计算WPF中excel列的dynamic单元格/行的总和

请问,有什么办法可以合计(总结)给定列的单元格(行)的内容,其行数(单元格)是dynamic的,也就是行数不固定,一个Excel工作表? 我一直在尝试没有任何有意义的结果,我试图使用偏移量,但不断从HRESULT等等得到一些COM_Exception等等…… 下面是试图用于实现我的目的的演示代码的一部分。 请高度赞赏任何build议(与代码片段)。 private void button1_Click(object sender, RoutedEventArgs e) { excel.Application xlApp; excel.Workbook xlWorkBook; excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new excel.Application(); var MyExcel = new excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); excel.Range chartRange; chartRange = xlWorkSheet.get_Range("$A:$A", Type.Missing); xlWorkSheet.Cells[1, 1] = "Temperature(deg)"; xlWorkSheet.Cells[1, 2] = "Humidity(m-3)"; xlWorkSheet.Cells[1, 3] = "Wind Speed(m/s)"; […]

WPF工具包是否可以像Excel一样缩放图表

我正在开发一个情节/图表/图表。 我想o在基准10的日志上缩放Y轴 – 所以我想要Y轴上的值为0,10,100,1000,10000,100000。 我也能够得到这个比例,但是想要相同距离的值。 附上我得到的东西和我想要的快照: 从我的代码中得到的结果: 这是从Excel生成的图表。 在我的应用程序中,我想要这个结果,即数字之间的距离相等。 我用来缩放我的Y轴的代码: public class LogConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { double x = double.Parse(value.ToString()); int y = (int)x; switch (y) { case 0: case 10: case 100: case 1000: case 10000: case 100000: case 1000000: case 10000000: Console.WriteLine("Log […]