Tag: c#

使用C#访问Excel电子表格有时会返回某些单元格的空白值

我需要访问Excel电子表格,并将电子表格中的数据插入到SQL数据库中。 然而,主键是混合的,大多数是数字,一些是字母数字。 我遇到的问题是,当数字键和字母数字键在同一电子表格中时,字母数字单元格返回空白值,而所有其他单元格都没有问题返回其数据。 我正在使用OleDb方法来访问Excel文件。 用命令string检索数据后,我把数据放入一个DataAdapter,然后填充一个DataSet。 我遍历DataSet中第一个DataTable中的所有行(dr)。 我使用dr [“…”]来引用列。ToString() 如果我在Visual Studio 2008中debugging项目,并查看“扩展属性”,通过将鼠标放在“dr”上,我可以查看DataRow的值,但是应该是字母数字的主键是{}。 其他值用引号括起来,但空白值有大括号。 这是一个C#问题或Excel问题? 有没有人曾经遇到过这个问题,或者可能find解决方法/修复? 提前致谢。

如何将Excel工作表的列名转换为数字?

我想知道什么是最好的方式来将Excel表单列名转换为数字。 我正在使用Excel包 ,一个很好的库来处理.xlsx文件。 这个库不幸的是没有包含这个function。 OBS:第一列A对应于该库中的编号1。

ODBC连接到Excel错误

我有一个应该连接到Excel表的ODBC连接的问题,并做它的东西。 我已经在网上阅读了很多关于它的东西,但没有一个解决scheme帮助我(包括计算器)。 所以基本上我正在尝试打开一个表的连接。 private static SortedList<string, School> generateSchoolListExcel(string listFilePath) { StringBuilder con = new StringBuilder(); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Data Source", listFilePath); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "HDR", "yes"); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Format", "xlsx"); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Driver", "{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}"); //I have tried to specify driver without parentheses {} but it's still the same List<School> schoolList = new List<School>(); using (OdbcConnection […]

使用DataTable和Linq导出到Excel中缺less一些数据

我正在导出单个XL文件中的三个工作表,但我缺less第二个DataTable ( Education Details表)和第三个DataTable ( Employeement Details表)中的一些用户数据。 “ Education Details表是有些用户不在,但用户正在显示的“ Employeement Details表。 用户电子邮件ID是那里所有三个数据库表。 DataSe ds = new DataSet(); DataTable dt = new DataTable("Registration Details"); DataTable dt1 = new DataTable("Education Details"); DataTable dt2 = new DataTable("Employeement Details"); dt = bl.Get_Registrationdetailsbydate(bo); gv_Regdetails.DataSource = dt; gv_Regdetails.DataBind(); dt1 = bl.Get_Registrationdetailsbydate1(bo); dt2 = bl.Get_Registrationdetailsbydate2(bo); DataTable filteredEducation = dt1.AsEnumerable() .Where(x => […]

使用包装对象来正确清理Excel互操作对象

所有这些问题: 通过.NETclosures时Excel 2007挂起 如何正确清理C#中的Excel互操作对象 如何正确清理C#中的互操作对象 与使用它们后C#不能正确释放Excel COM对象的问题斗争。 解决这个问题主要有两个方向: 当不再使用Excel时,终止Excel进程。 注意明确地将每个用于variables的COM对象首先分配给一个variables,并保证每个variables都执行Marshal.ReleaseComObject。 有些人说,2太繁琐了,你是否忘记在代码的某些地方忘记遵守这条规则,总会有一些不确定性。 仍然1似乎肮脏,容易出错,我也想在一个有限的环境试图杀死一个进程可能会引发安全错误。 所以我一直在考虑通过创build另一个模仿Excel对象模型的代理对象模型(对于我来说,实现我实际需要的对象就足够了)来解决2。 原则如下: 每个Excel Interop类都具有包装该类的对象的代理。 代理在其终结器中释放COM对象。 代理模仿Interop类的接口。 最初返回一个COM对象的任何方法都改为返回一个代理。 其他方法只是将实现委托给内部COM对象。 例: public class Application { private Microsoft.Office.Interop.Excel.Application innerApplication = new Microsoft.Office.Interop.Excel.Application innerApplication(); ~Application() { Marshal.ReleaseCOMObject(innerApplication); innerApplication = null; } public Workbooks Workbooks { get { return new Workbooks(innerApplication.Workbooks); } } } public class Workbooks { […]

使用Interop与C#,Excel保存更改的原始。 如何否定这一点?

问题:加载一个Excel电子表格模板。 使用不同文件名的保存命令,然后退出互操作对象。 这最终保存了原始的模板文件。 不是喜欢的结果。 public void saveAndExit(string filename) { excelApplication.Save(filename); excelApplication.Quit(); } 打开的原始文件是c:\ testing \ template.xls传入的文件名是c:\ testing \ 7777(date).xls 有没有人有答案? (我select的答案是最正确和彻底的,虽然wbk.Close()需要传递给它的参数,谢谢。)

从内存中打开excel工作簿

我正在尝试从内存stream中打开一个Excel工作簿。 我有一个url的Excel文件,我所做的是我从url下载数据,然后将其保存到一个内存stream,但我不知道如何从stream中打开工作簿,这是我的代码是如何工作的远。 WebClient wc = new WebClient(); byte[] fileArray = wc.DownloadData("url is inserted here"); MemoryStream ms = new MemoryStream(fileArray); 但从这里我不知道如何去读取stream中的数据来创build工作簿,它似乎不像来自http://msdn.microsoft.com/zh-cn/library/ff478410的电子表格文档以我想要的方式工作,任何帮助或指针将不胜感激

如何使用进程ID获取Excel实例或Excel实例CLSID?

我正在使用C#,我需要通过它的进程ID来获得一个特定的Excel实例; 我从另一个应用程序获得我需要的实例的进程ID,但是我不知道该怎么办,我不知道如何在给定进程ID的情况下获得一个正在运行的实例。 我在网上研究了很多,但我只看到使用Marshal.GetActiveObject(…)或Marshal.BindToMoniker(…)的例子,我不能使用,因为第一个返回第一个Excel实例注册在ROT中,而不是我所需要的,第二个要求你在试图获取实例之前保存excel文件。 此外,如果我能够得到我需要的Excel实例的CLSID,使用进程ID,那么我可能会打电话给 GetActiveObject(ref _guid, _ptr, out objApp); 最终会返回我需要的excel实例。

Excel 2013崩溃

我试图将Excel 2013embedded到WPF应用程序中。 问题是,当我在以下代码中调用SetWindowLongPtr时,Excel 2013立即崩溃。 我挖了它,发现如果我注释掉WS.CHILD风格,它工作正常,但Excel表变成只读,这不是我想要的。 相同的代码与Excel 2010工作正常。 Excel.Application _excelApp; IntPtr _wrappedApplicationHandle; Int64 lngStyle; Int64 lExStyle; private void Button_Click_1(object sender, RoutedEventArgs e) { _excelApp = new Excel.Application() { Visible = true, DisplayFormulaBar = true, }; _wrappedApplicationHandle = new IntPtr( _excelApp.Hwnd); lngStyle = GetWindowLongPtr(_wrappedApplicationHandle, (int)GWL.STYLE).ToInt64(); lngStyle &= ~(int)WS.CAPTION; lngStyle &= ~(int)WS.SIZEBOX; lngStyle |= (int)WS.MAXIMIZE; lngStyle |= (int)WS.CHILD; […]

在x轴上具有多级标签的图表

我正在创build一个VSTO插件,其中包含一些年度数据的线图。 该数据每周包含数据点。 我想横轴在几个月内分组,如下图所示: 然而,我不能在VSTO的文件中find这是否可行的事情。 据我所知,一个Series只需要X轴的一维数组值。 有人对这个有经验么?