Tag: c# 4.0

如何获得英文字母的第n个字母

有没有办法获得英文字母的第n个字母? 我想smt类似于这样的: string letter = EnglishAlphabet.GetLetter(5); //result -> letter is 'E' 我想根据我的清单计数来使用它。 如果我的名单上有3个元素,那么“D:D”就足够了,但是有4个元素,然后是“E:E”。 我想在这里使用这个string: Excel.Range chartRange; Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); Excel.ChartObject myChart = xlCharts.Add(5, 5, 540, 160); Excel.Chart chartPage = myChart.Chart; chartRange = xlWorkSheet.get_Range("A:A", "D:D");//"D:D" changes according to size of the list?? 有什么build议么? 谢谢

有没有一种方法来控制左边的任务窗格的宽度持有一个加载项?

我有一个用VS2010 VSTO库构build的excel 2007加载项。 当我创build加载项的新对象时,我也创build一个Excel左边的任务窗格,使用下面的代码: Microsoft.Office.Tools.CustomTaskPane taskPaneAddIn; MyAddIn addIn; addIn = new MyAddIn(this.Application); taskPaneAddIn = this.CustomTaskPanes.Add(addIn, "My AddIn"); taskPaneAddIn.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft; taskPaneAddIn.Width = addIn.Size.Width + 5; addIn是一个windows用户控件,它有自己的尺寸。 上面的代码似乎不工作,因为taskPaneAddIn宽度总是固定在Excel中。 用户始终必须手动展开任务窗格才能看到控件的整个宽度。 有没有任何可编程的方式来设置任务窗格的宽度?

将文本存储为数字

我有一个Excel工作簿,其中列C为数字存储为文本。 什么是C#语法将其转换为数字? 我知道这个VBA会做这个工作 Range("C:C").Select With Selection Selection.NumberFormat = "0.00%" .Value = .Value End With 而我用C#试了这个,但是它保留了以文本forms存储的数字。 ExcelWorksheet ws3 = pck.Workbook.Worksheets.Add("New Sheet"); ws3.Cells["A1"].LoadFromDataTable(tableforme, true); ws3.View.FreezePanes(2, 4); ws3.Cells["C:C"].Style.Numberformat.Format = "#,##0.00"; ws3.Cells["C:C"].Style.Numberformat.Format = "0%"; 在C#中我必须做些什么才能将以数字forms存储为文本的列进行转换。

如何更快地读取OpenXML格式

当我使用OLEDB时,从Excel工作表中读取3200行只需要2 – 3秒。 现在我改成了OpenXML格式,现在需要1分多钟才能读取Excel工作表中的3200行。 以下是我的代码: public static DataTable ReadExcelFileDOM(string filename) { DataTable table; using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true)) { WorkbookPart workbookPart = myDoc.WorkbookPart; Sheet worksheet = workbookPart.Workbook.Descendants<Sheet>().First(); WorksheetPart worksheetPart = (WorksheetPart)(workbookPart.GetPartById(worksheet.Id)); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); List<List<string>> totalRows = new List<List<string>>(); int maxCol = 0; foreach (Row r in sheetData.Elements<Row>()) { // Add the empty […]

在此之前确定VSTO 4中的Office版本。应用程序已设置

我想在Addin上调用CreateRibbonExtensibilityObject()时,确定VSTO Addin中Office / Excel的版本。 我遇到了这个问题,遇到了: 这个插件的应用是null ,这个时候还没有被VSTO设置。 ThisAddIn_Startup(..)在CreateRibbonExtensibilityObject()之后被调用。 this.Application.Version目前尚不可用,因为Addin似乎还没有初始化。 在VSTO运行时调用Addin中的CreateRibbonExtensibilityObject()时,有没有办法确定Excel( 12,14或15 )的版本? UPDATE 发现ItemProvider被实例化了,我用了以下来获得主要的办公版本。 FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance); uint officeVersion = (uint)temp.GetValue(this.ItemProvider); 我也接受SliverNinja的回答。

IMessageFilter无法处理0x800AC472(VBA_E_IGNORE)是否使实现IMessageFilter无关紧要?

从msdn看来, IMessageFilter并不处理所有的exception,例如,在某些时候,办公应用程序“暂停”它们的对象模型,此时不能被调用并抛出: 0x800AC472 (VBA_E_IGNORE) 为了解决这个问题,你必须把你的呼叫放在一个循环中,等待它的成功: while(true) { try { office_app.DoSomething(); break; } catch(COMException ce) { LOG(ce.Message); } } 我的问题是:如果这个样板代码对于每个应用程序的对象模型的调用都是必需的,那么在实现IMessageFilter是否有任何意义?

如何使用c#不使用Excel填充背景颜色?

有了这个: using Excel = Microsoft.Office.Interop.Excel; 我正在打开Excel,并将第一个单元格的颜色设置为透明,如下所示: xlRange = xlWorkSheet.get_Range("A1"); xlRange.Interior.Color = System.Drawing.Color.Transparent; 问题是,它把白色和“边界”消失。 我想把“没有填充”选项,它不工作。 我也试过这个: xlRange.Interior.Color = System.Drawing.Color.Empty; 但随后它将单元格颜色更改为黑色。 我该如何解决这个问题?

在Excel上执行多个更新命令

我有一个Excel文件,我想更新表中的多行。所以我写这个代码: OleDbConnection cn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + serverPath + ";Extended Properties = Excel 8.0;"); try { strUpd = ""; strUpd += "update [Data14City$] set B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8 where id = 1 "; strUpd += " update [Data14City$] set B_1_1 = […]

禁用粗体button

我想在Excel工作表中禁用“粗体”切换button。 我该怎么做? 我有下面的代码,但它不工作: CommandBarControl test = excel1.Application.CommandBars["Formatting"].FindControl(Id:113,Recursive:true); if (test.Enabled) { MessageBox.Show(test.Caption + " enabled"); test.Visible = false; test.Enabled = false; } 我认为这是行不通的,因为从Office 2007他们使用function区控件。 任何人都可以帮助如何获得特定button的控制? 所以我可以改变它的属性,默认启用/禁用它等等

Excel中的工作表和表格之间的区别

在excel COM interop(C#)中,有什么区别: _sheet = (Excel._Worksheet)_wb.Worksheets["SheetName"]; 和 _sheet = (Excel._Worksheet)_wb.Sheets["SheetName"]; ?