小编Cor*_*ius的帖子

使用c#在Excel范围中剪切和粘贴列

我正在尝试将excel表中列Q前面的列B移动,作为我正在处理的报告的一部分.我有VBA的经验,但在c#中相对较少,所以我花了最后一小时在谷歌上找不到解决方案,我觉得这应该很简单,但我不能完全理解.

方法一,导致"Range类的插入方法失败"msg.

Excel.Range rngCut1 = JobLabourSheet.get_Range("B:B", Type.Missing);
Excel.Range rngPaste1 = JobLabourSheet.get_Range("Q:Q", Type.Missing);
            rngCut1.Columns.Cut(rngPaste1.EntireColumn.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, rngCut1));
Run Code Online (Sandbox Code Playgroud)

方法二导致"无法获取Range类的Cut属性"msg.

Excel.Range rngCut1 = JobLabourSheet.get_Range("B:B", Type.Missing);
Excel.Range rngPaste1 = JobLabourSheet.get_Range("Q:Q", Type.Missing);
            rngCut1.Columns.Cut(rngPaste1.EntireColumn.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, Missing.Value));
Run Code Online (Sandbox Code Playgroud)

在第二种方法中,当我省略CopyOrigin时,我得到了msg,但它确实在列Q前插入了一个空白列.

在VBA中,我将使用以下内容:

Columns("B:B").Cut
Columns("Q:Q").Insert Shift:=xlToRight
Run Code Online (Sandbox Code Playgroud)

但就像我说的那样,我的c#体验目前是有限的,所以我不知道如何将它翻译成c#

c# excel

5
推荐指数
1
解决办法
9657
查看次数

尝试使用c#将excel范围按两列排序

我有一个excel范围,我需要按两列排序.数据总是从A列到AA列,我需要先按A列(这是一个日期列,最旧到最新)进行排序,然后按F列(数字列,从最小到最高)进行排序.行数会有所不同.

这是我到目前为止所记得的,请记住我对c#比较新.

         Excel.Worksheet JobDataSheet = new Excel.Worksheet();

         foreach (Excel.Worksheet tmpSheet in Globals.ThisAddIn.Application.ActiveWorkbook.Sheets)
         {
             if (tmpSheet.Name == "Job Labour" || tmpSheet.Name == "Job Materials" || tmpSheet.Name == "Job Cost Report")
             {
                 tmpSheet.Delete();
             }
             if (tmpSheet.Name == "Job Cost")
                 JobDataSheet = tmpSheet;
         }


         int MyCount = JobDataSheet.UsedRange.Rows.Count;

          //Sort Collection by Date & Ref Line
         Excel.Range tempRange = JobDataSheet.get_Range("A2:A" + MyCount);
         Excel.Range tempRange2 = JobDataSheet.get_Range("F2:F" + MyCount);

         JobDataSheet.Sort.SortFields.Clear();
         JobDataSheet.Sort.SortFields.Add(tempRange // First Key
                                           ,Excel.XlSortOn.xlSortOnValues
                                           ,Excel.XlSortOrder.xlAscending
                                           ,Type.Missing
                                           ,Excel.XlSortDataOption.xlSortNormal);
         JobDataSheet.Sort.SortFields.Add(tempRange2 // Second Key
                                           , Excel.XlSortOn.xlSortOnValues
                                           , …
Run Code Online (Sandbox Code Playgroud)

c# sorting excel

3
推荐指数
1
解决办法
8662
查看次数

Excel公式将数字转换为英尺和英寸

我有一个电子表格(excel 2010),其中 AI 列中有一个公制值(2413 毫米),而 BI 列中需要一个公式来转换 2413 毫米以按以下格式显示英尺/英寸(7' 11")

如果我使用 3 或 4 列首先将 2413 转换为 7.9',然后将英尺和英寸提取到两个单独的列中,最后将单独的英尺和英寸连接成一个最终单元格,我就可以做到这一点。

我真的很想能够在一个单元格内完成所有这些。

excel excel-formula excel-2010

3
推荐指数
1
解决办法
2万
查看次数

手动向 DataGridView 添加新行不会立即更新绑定的 DataTable

我有用 .net-4.0 编写的 c# windows 窗体应用程序

我有一个 datagridview ( dgvItems),我在导入函数末尾以编程方式绑定到数据集和数据表。

我有一个导入按钮,可以将数据从选定的 Excel 文件导入到名为 的表中_dtItemAdjustList,导入数据后,我将该表绑定到我的网格。我用来绑定网格的代码是:

dgvItems.DataSource = _dsQtyAdjust;
dgvItems.DataMember = "Item Adjust List";
dgvItems.Refresh();
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切工作正常,如果我在 datagridview 中编辑导入的数据,它会在_dtItemAdjustList编辑每个单元格后更新绑定表。

当我尝试手动向 datagridview 添加一行时,我的问题出现了,它不会立即将该新行添加到绑定的数据表中。

示例:我在活动结束时设置了一个断点dgvItems_CellValueChanged并添加了一个_dtItemAdjustList.Rows.Count手表,下面是发生的情况。

导入数据并编辑现有导入行之一后,手表会显示正确的行数,比如说5

现在我单击最后一个 * 行,然后在我的 item# 列中输入一些内容并点击选项卡,断点触发,但我的行数仍然只显示5,我在新行中又填写了一些单元格,但每次我留下一个单元格和我的 CellValueChanged 事件触发,行数保持为5

接下来,我添加第二个手动行,现在,在我从为第二个新行填写的第一个单元格中跳出后,我的行计数器变为6,但从技术上讲,此时我已将2 个手动行添加到我导入的5行中,所以计数器应读数7

这样重复,基本上每个新手动添加到 datagridview 的行都不会添加到绑定数据表中,直到a)添加另一行或b)我返回并重新编辑现有行上的单元格。

编辑忘记提及我尝试通过两种方式绑定我的 DataGridView:

DataSource = _dsQtyAdjust //dataset Name
DataMember = "Item Adjust …
Run Code Online (Sandbox Code Playgroud)

datatable datagridview winforms c#-4.0

3
推荐指数
1
解决办法
2707
查看次数

SSRS 2008:如果参数不为NULL或空白,则在文本框中显示报告参数

我有一个报告(SSRS 2008 r2),它有两个参数,@StartDate和@EndDate。两个参数都设置为类型:Date / Time,并允许使用NULL值。现在,@ EndDate默认为NULL(我正在处理SP中的NULL值),并且在我的报告中,我有一些文本框,其中显示了报告中使用的开始日期和结束日期范围。

对于显示结束日期的文本框,如果参数为null或空白,则使用一个显示当前日期的表达式,但是如果用户选择结束日期,则文本框应显示所选的结束日期。这是我遇到问题的地方。

我正在使用以下表达式显示结束日期。

=IIF(IsNothing(Parameters!EndDate.Value) OR Parameters!EndDate.Value = "", Format(Now(), "MMM - dd, yyyy"), Format(Parameters!EndDate.Value, "MMM - dd, yyyy"))

如果结束日期参数为NULL,则该表达式有效,但如果选择结束日期,则该表达式始终返回#Error

我创建了单独的文本框来尝试此表达式的不同部分。都:

Format(Now(), "MMM - dd, yyyy")

Format(Parameters!EndDate.Value, "MMM - dd, yyyy")

自己做得很好。这是我尝试将它们放入IIF块中以根据EndDate参数是否为null或是否为空白(错误出现时)有条件地返回一个或另一个的情况。

reporting-services ssrs-2008 ssrs-2008-r2

1
推荐指数
1
解决办法
4280
查看次数

c#从字符串中间删除零

我正在使用ac#-4.0 Windows Form应用程序,我需要从序列号中删除填充零.

我的序列存储在一个字符串中,看起来像这个BMS21-14-000000000000000000120,我最后的结果是BMS21-14-120.

序列号结构是:

  • BMS21是前缀.
  • 14是生产年份.
  • 120是递增数.

现在,我们的前缀和递增数字的长度将随产品而变化,但结构是一致的.它总是前缀,年份递增#,它们总是用短划线分隔.

我尝试遵循msdn概述的示例,但我无法让它为我们的序列号工作.

c# string trim c#-4.0

1
推荐指数
1
解决办法
606
查看次数

如何获取包含特定字母的字符串数组元素的位置

我正在开发一个应用程序,用户将破折号分隔值输入文本框,文本框值放入字符串数组,用" - "分隔.我需要搜索这个数组并获得包含字母"q"的元素的位置.

此文本框中可能有6种不同的输入,输入示例如下:

  • "292"
  • "292-0"
  • "292-0-10"
  • "292-Q10"
  • "292-0-Q10"
  • "292-0-10-Q10"

我将文本框值拆分为" - ".代码是:string[] arrayJobSuffix = txtBFSJob.Text.Split(new char[] { '-' }, 5);

现在我需要搜索这个arrayJobSuffix数组并找到包含"q"的元素的位置.

例如,假设数组中的第一个元素为0,则:

  1. 如果文本框中的值为"292","292-0"或"292-0-10",则返回-1或不存在指示"q"的内容.
  2. 如果文本框中的值为"292-q10",则返回1
  3. 如果文本框中的值为"292-0-q10",则返回2
  4. 如果文本框中的值为"292-0-10-q10",则返回3等等...

c# arrays textbox split

0
推荐指数
1
解决办法
2283
查看次数