Tag: .net

Excel单元格格式问题

我正在使用OleDB DataReader从我的Excel文件中获取数据(但是这个问题也发生在DataTable.Fill中)。 问题是我有一个应该返回string的列。 一切都很好,但最近,一个问题出现了,因为列的单元格有不同的格式。 一些在数字和其他文字。 当我使用dataReader.GetSchema()检查它显示有问题的列被推断为typesSystem.String。 这个问题是,所有的非文本单元立即被设置为空。 有没有办法build议读者,该列应该只parsing列为System.Object而不是推断它为System.String和转储所有非string单元格? 我正在使用的连接string是: stringconnString =“提供程序= Microsoft.Jet.OLEDB.4.0;” +“Data Source =”+ filePath +“;” +“扩展属性= Excel 8.0;”; 代码是: using ( OleDbConnection connection = new OleDbConnection( connString ) ) { connection.Open(); foreach ( string worksheetName in worksheetNames ) { using ( OleDbCommand command = new OleDbCommand( "SELECT * FROM [" + worksheetName + […]

Excel图表types垂直值

从很长一段时间,我试图生成这样的graphics 我试过的代码 Excel.Range chartRange1; Excel.ChartObjects xlCharts1 = (Excel.ChartObjects)worksheet.ChartObjects(Type.Missing); Excel.ChartObject myChart1 = (Excel.ChartObject)xlCharts1.Add(350, 500, 500, 350); Excel.Chart chartPage1 = myChart1.Chart; chartRange1 = worksheet.get_Range("A33", "b56"); chartPage1.SetSourceData(chartRange1, Type.Missing); chartPage1.ChartType = Excel.XlChartType.xlBarStacked; Excel.Range xValues = worksheet.Range["B33", "B56"]; Excel.Range values = worksheet.Range["a33", "a56"]; Excel.SeriesCollection seriesCollection = (Excel.SeriesCollection)chartPage1.SeriesCollection(); Excel.Series series1 = seriesCollection.NewSeries(); series1.XValues = xValues; series1.Values = values; 请帮助我应该使用哪种图表types,或者我犯了什么错误。 一个 更改图表types后,它工作得很好,但不适用于最后一行文本。 […]

在.Net中从Excel导入时的科学记数法

我有一个C#/ .net作业,从Excel导入数据,然后处理它。 我们的客户端删除文件,我们处理它们(重要的,因为我没有任何控制原始文件)。 我使用OleDb库来填充一个数据集(我讨厌编写这个代码,严重的是,有没有一个.Net开发人员可以编写更多的代码?)。 该文件包含一些数字,如30829300,30071500等…这些列的数据types是“文本”。 这些数字在我导入数据时转换为科学记数法。 无论如何要防止这种情况发生? -克里斯

将.net方法公开为Excel函数?

我有一套坐在.Net DLL中的计算方法。 我想使Excel(2003+)用户可以使用这些方法,以便他们可以在电子表格中使用这些方法。 例如,我的.net方法: public double CalculateSomethingReallyComplex(double a, double b) {…} 我想让他们只需在随机单元格中input公式即可调用此方法: =CalculateSomethingReallyComplex(A1, B1) 什么是最好的方法来完成这个?

我可以在Word或Excel中创build撤消事务吗? (VSTO)

我注意到Project 2007的function允许撤销的操作被放置在单个堆栈项目中,或“撤销事务”。 例如: Application.OpenUndoTransaction "Create 6 tasks" Dim i As Integer For i = 1 To 6 ActiveProject.Tasks.Add "UndoMe " & i Next Application.CloseUndoTransaction 这意味着用户可以撤消所有的动作,而不是6次。 这将是伟大的Word和/或Excel中实现,因为我正在做一些事情在VSTO,一次做多个更改,这将是一个恼人的用户,如果他们必须点击撤消多次,如果他们犯了一个错误。 虽然这些特定的function似乎不存在,有没有人知道是否/如何以某种方式做到这一点?

无法在空引用上执行运行时绑定 – 清空Excel单元格

我似乎无法想出一种方法来纠正标题中提到的错误,并正在寻找应该做什么的一些想法。 我正在尝试将excel电子表格的行读取到对象中。 第一次循环我没有问题,因为行1,列1和行1列2中有数据。 但是,当它到达第2行,第1列和第2行第2列时,由于上述错误而失败,因为电子表格中的这些单元格是“空的” 我只是不能在那里我可以把一些“如果空”检查。 任何人都可以build议如何做到这一点? 这是我的代码… private static void IterateRows(Excel.Worksheet worksheet) { //Get the used Range Excel.Range usedRange = worksheet.UsedRange; // create an object to store the spreadsheet data List<SPREADSHEETModel.spreadsheetRow> spreadsheetrows = new List<SPREADSHEETModel.spreadsheetRow>(); //Iterate the rows in the used range foreach (Excel.Range row in usedRange.Rows) { for (int i = 0; i < […]

使用c#在excel中select工作表

在Visual Studio 2008中使用.NET 3.5中的C#,我想在打开的工作簿中设置焦点(或激活)特定的工作表: 以下是一些属性: public Excel.Application xlApp {get;set;} public Excel.Workbook xlWorkBook { get; set; } public Excel.Worksheet xlWorkSheet { get; set; } public Excel.Range range { get; set; } 这里是我如何select一个特定的工作表: (xlWorkSheet)Application.ActiveWorkbook.Sheets[FormControls.WorksheetFocus]).Select(Type.Missing); 我也尝试过这种方式: ((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets[1]).Select(); 我究竟做错了什么? 如何使用C#在工作簿中select特定的工作表? 解释定义在哪里: namespace EmailSalesVolumeSolution { class WorkBook { public string MasterFileName { get; set; } public string[] DistinctEmails { get; […]

什么架构来解决这个SystemOutOfMemoryException,同时允许我实例化一个工作表的单元格?

概要 这个问题是后续build设一个简单的电子表格API的愿望,同时保持对那些谁了解Excel的用户友好。 总结起来,这个问题与以下两点有关: 1. 如何从索引中实现列自我命名? ; 2. 如何使这个自定义工作表初始化更快? 。 目的 提供一个简化的Excel API,用作包含Application , Workbook , Worksheet和Range类/接口等内核组件的封装,同时仅公开每个对象的最常用对象属性。 用法示例 这个用法的例子是从unit testing中得到灵感的,这个unit testing使我能够把这个解决scheme提升到现在的地位。 Dim file as String = "C:\Temp\WriteTest.xls" Using mgr As ISpreadsheetManager = New SpreadsheetManager() Dim wb as IWorkbook = mgr.CreateWorkbook() wb.Sheets("Sheet1").Cells("A1").Value = 3.1415926 wb.SaveAs(file) End Using 现在我们打开它: Dim file as String = "C:\Temp\WriteTest.xls" Using mgr As […]

在C#中将Excel单元格值设置为小数。 .NET 2和.NET 4之间的区别

我有这个代码(这是真正的代码的简化版本),打开excel并设置单元格的值。 请注意,我在意大利,我们使用,而不是。 分隔小数位。 这意味着我在代码中使用了12.5,但是这个数字上的ToString()的结果是“12.5”,而Excel也显示了12.5。 using Xls = Microsoft.Office.Interop.Excel; public class ExcelTest { public static void Test { object hmissing = System.Reflection.Missing.Value; // create an instance of Excel and make it visible Xls.Application anApp = new Xls.ApplicationClass(); anApp.Visible = true; // add an empty workbook Xls.Workbooks wbks = anApp.Workbooks; wbks.Add(hmissing); Marshal.ReleaseComObject(wbks); // set the value of […]

在内存OleDbConnection到Excel文件

我想打开一个OleDbConnection作为一个FileStream在内存中的Excel文件。 有谁知道这是可能的,以及如何实现它? 大图我想将文件字节传递给.NET CLR存储过程并提取数据。 也许有一个更好的方法来做到这一点,我没有考虑。 提前致谢。