Tag: c#

如何在WPF中debugging绑定

我有一个VS2008,C#WPF,Excel AddIn; 在某些情况下,我的插件引发exception A first chance exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll A first chance exception of type 'System.NullReferenceException' occurred in PresentationFramework.dll 但我找不到exception来自哪里。 我知道这是B / C数据绑定。 但无法find在哪里。 每次我介入,VS跟踪执行无错误的方法,然后,exception抛出,但没有线索的代码行。 我一直在苦苦挣扎,无法取得进展。 请帮忙。 谢谢 编辑,这是太长,以适应评论。 所以我只是把xaml文件放在这里。 抛出exception的@xmal文件。 DataGridComboBoxColumn引发exception <UserControl x:Class="View.BasketView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit" > <UserControl.Resources> <sharedC:FunctionToHiddenVisibility x:Key="enumSRToVis"/> <sharedC:FunctionToHiddenVisibility x:Key="enumCSToVis"/> <Style x:Key="DataGridRowStyle" TargetType="{x:Type dg:DataGridRow}"> <Style.Triggers> <Trigger Property="AlternationIndex" Value="1" […]

C#:如何访问Excel单元格?

我想打开一个Excel文件,并填充其数据的单元格? 到目前为止,我已经完成了以下编码。 目前我在这个阶段与下面的代码,但仍然是我得到的错误: Microsoft.Office.Interop.Excel.ApplicationClass appExcel = new Microsoft.Office.Interop.Excel.ApplicationClass(); try { // is there already such a file ? if (System.IO.File.Exists("C:\\csharp\\errorreport1.xls")) { // then go and load this into excel Microsoft.Office.Interop.Excel.Workbooks.Open( "C:\\csharp\\errorreport1.xls", true, false, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); } else { // if not go and create a […]

单元格样式alignment范围

我在Excel表格中有一个问题, 出于某种原因,我的代码似乎正在改变所有单元格的样式,当我只想改变几个指定的样式,或指定的范围。 以下是我正在使用的一些代码: app = new Microsoft.Office.Interop.Excel.Application(); workbook = app.Workbooks.Add(1); worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1]; //Change all cells' alignment to center worksheet.Cells.Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //But then this line changes every cell style back to left alignment worksheet.Cells[y + 1, x + 2].Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft; 为什么它会改变多个单元格的样式,当我把它设置为只在一个单元格上工作? 是不是应该如何工作? 有没有另外一种方法呢?

如何使用Microsoft.Office.Interop.Excel从Excel导入到DataSet?

我想做的事 我试图使用Microsoft.Office.Interop.Excel命名空间来打开一个Excel文件(XSL或CSV,但不幸的是不是 XSLX),并将其导入到DataSet中。 我无法控制工作表或列名,所以我需要允许对它们进行更改。 我试过了 过去我已经尝试过这种OLEDB方法 ,并且有很多问题(bug,慢,并且需要事先了解Excel文件的模式),所以我想避免再这样做。 我想要做的是使用Microsoft.Office.Interop.Excel将工作簿直接导入到数据集,或循环通过工作表,并加载到DataTable中的每一个。 相信与否,我一直在寻找资源的麻烦。 在StackOverflow的一些search发现大多数人试图做相反(DataSet => Excel),或OLEDB技术。 Google没有太多帮助。 到目前为止我所拥有的 public void Load(string filename, Excel.XlFileFormat format = Excel.XlFileFormat.xlCSV) { app = new Excel.Application(); book = app.Workbooks.Open(Filename: filename, Format: format); DataSet ds = new DataSet(); foreach (Excel.Worksheet sheet in book.Sheets) { DataTable dt = new DataTable(sheet.Name); ds.Tables.Add(dt); //??? Fill dt from sheet […]

Excel Interop – 在所有其他人之后添加一个新的工作表

我正在尝试将新的工作表添加到Excel工作簿,并将其作为C#Excel Interop中的书中的最后一个工作表。 这看起来很简单,我认为下面的代码会做到这一点: using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { var excel = new Excel.Application(); var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx"); workbook.Sheets.Add(After: workbook.Sheets.Count); workbook.Save(); workbook.Close(); Marshal.ReleaseComObject(excel); } } } 没有这样的运气。 我得到这个有用的错误: COMException是未处理的 – 从HRESULTexception:0x800A03EC 我在Microsoft.com上find了这个页面 , 这个页面build议我尝试先添加表格,然后移动它,所以我尝试了如下所示。 我知道这个网页的目标是Excel 95,但VBA仍在使用,所以我希望它仍然可以工作: using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication2 […]

如何使用Excel Interop保存/覆盖现有的Excel文件 – C#

有没有办法通过excel互操作保存到Excel电子表格(在这种情况下,我正在添加一个工作表),而没有提示用户,如果他们想覆盖现有的文件的变化。 我不希望用户甚至看到我的应用程序中打开的电子表格,所以有一个消息框popup,询问他们是否要覆盖文件似乎很不合适,可能会混淆用户。 我正在使用workbook.SaveAs(fileloaction)方法。 这里是我正在初始化excel互操作的COM参考对象。 private Excel.Application app = null; private Excel.Workbook workbook = null; public Excel.Workbook Workbook { get { return workbook; } set { workbook = value; } } private Excel.Worksheet worksheet = null; private Excel.Range workSheet_range = null; 下面是我用来closures/保存excel文件的代码。 workbook.close()方法行是据报道引发未处理的exception。 workbook.Close(true, startForm.excelFileLocation, Missing.Value); Marshal.ReleaseComObject(app); app = null; System.GC.Collect();

使用EPPlus Excel到DataTable – excellocking进行编辑

我正在使用以下代码使用EPPlus将Excel转换为数据表: public DataTable ExcelToDataTable(string path) { var pck = new OfficeOpenXml.ExcelPackage(); pck.Load(File.OpenRead(path)); var ws = pck.Workbook.Worksheets.First(); DataTable tbl = new DataTable(); bool hasHeader = true; foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) { tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); } var startRow = hasHeader ? 2 : 1; for (var rowNum = startRow; […]

将Excel快速导入DataTable

我正在尝试将Excel文件读入Data.DataTable列表中,尽pipe使用当前的方法可能需要很长时间。 我实际上按工作表逐个工作表,而且它往往需要很长时间。 有没有更快的方法来做到这一点? 这是我的代码: List<DataTable> List = new List<DataTable>(); // Counting sheets for (int count = 1; count < WB.Worksheets.Count; ++count) { // Create a new DataTable for every Worksheet DATA.DataTable DT = new DataTable(); WS = (EXCEL.Worksheet)WB.Worksheets.get_Item(count); textBox1.Text = count.ToString(); // Get range of the worksheet Range = WS.UsedRange; // Create new Column in […]

Microsoft.Office.Interop.Excel.ApplicationClass没有定义的构造函数

我试图按照如何在C#教程中打开一个Excel文件 ,即在Com选项卡上添加一个引用到Microsoft Office 14.0 Object Library并尝试编译代码: using Excel = Microsoft.Office.Interop.Excel; //… Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; xlApp = new Excel.ApplicationClass();//error here //… 并面临编译时的错误,说 没有为Microsoft.Office.Interop.Excel.ApplicationClasstypes定义构造函数。 我错过了什么?

C# – 如何以编程方式添加Excel工作表 – Office XP / 2003

我刚刚开始通过C#拨动Excel,以便能够自动创build,并添加到Excel文件。 我可以打开文件并更新其数据并移动现有的工作表。 我的问题是如何添加新的床单? 我试过了: Excel.Worksheet newWorksheet; newWorksheet = (Excel.Worksheet)excelApp.ThisWorkbook.Worksheets.Add( Type.Missing, Type.Missing, Type.Missing, Type.Missing); 但是我得到COMexception ,我的谷歌search没有给我任何答案。 来自HRESULT的exception:0x800A03EC来源是:“Interop.Excel” 我希望有人能把我从痛苦中解救出来。