Tag: excel interop

没有使用硬代码的Excel到DataGridView

我试图读取Excel数据网格视图,而不做硬编码风格。 我试图做到这一点时遇到了错误。 任何人都可以帮助我吗? Excel.Workbook workbook; Excel.Worksheet NwSheet; Excel.Range ShtRange; Microsoft.Office.Interop.Excel.Application ExcelObj = null; OpenFileDialog filedlgExcel = new OpenFileDialog(); filedlgExcel.Title = "Select file"; filedlgExcel.InitialDirectory = @"c:\"; filedlgExcel.FileName = txtFileName.Text; filedlgExcel.Filter = "Excel Sheet(*.xlsx)|*.xlsx|All Files(*.*)|*.*"; filedlgExcel.FilterIndex = 1; filedlgExcel.RestoreDirectory = true; if (filedlgExcel.ShowDialog() == DialogResult.OK) { //Excel.Workbook theWorkbook = ExcelObj.Workbooks.Open( // filedlgExcel.FileName, 0, true, 5, // "", […]

在C#中创buildexcel文件

我的第一次使用C#的excel文件的经验。 作为一个演示,我在excel文件中写了一行,它工作,但现在我试图插入DataTable的所有行,但它给出了以下错误: “HRESULT:0x800A03EC” 这里是代码: for (int i = 0; i < table.Rows.Count; i++) { xlWorkSheet.Cells[i, 1] = table.Rows[i]["Ref"].ToString(); xlWorkSheet.Cells[i, 2] = table.Rows[i]["Name"].ToString(); } 请告诉我如何解决?

如何将sheet1中的数据移动到excel中的sheet2

我通过C#将内容写入Excel文件。 我在Excel中有4列和许多行。 当应用程序运行时,我需要检查数据是否存在于sheet1中,然后它应该被移动到sheet2。 如果sheet2也包含数据,则应该附加sheet2数据。 我正在使用interop dll访问excel。 我已经完成了写内容,但我怎样才能以编程方式移动它? 这是我的尝试。 Excel.Workbook xlwb; Excel.Application excelApp = new Excel.Application(); Excel.Worksheet xlssheet1; Excel.Worksheet xlssheet2; xlwb = excelApp.Workbooks.Open(myPath, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing); int rowIndex = 2; int colIndex = 1; if (excelApp.Cells[rowIndex, colIndex] != null) { xlssheet1 = (Worksheet)xlwb.Worksheets[1]; xlssheet2 = […]

即使在调用Quit之后,Excel进程仍然保持有效

我使用Devexpress Exporter创buildExcel工作表,然后将文件保存在特定位置。 创build文件后,我必须打开它,添加项目的下拉列表,然后再次保存在相同的位置。 在所有的操作之后,文件必须通过电子邮件自动发送到数据库的电子邮件地址。 现在,如果我有1000个电子邮件地址,并自动执行此过程,它正在创build10个以上的Excel实例。 如何停止创build这些实例,以及如何在不使用更多内存的情况下使用excel操作。 代码如下: protected string CreateExcelFile(string FilterName) { Random ranNumber = new Random(); int number = ranNumber.Next(0, 10000000); string FileName = "TestDoc"+DateTime.Now.Year.ToString()+number.ToString()+DateTime.Now.Second.ToString()+".xls"; string path = @"c:\TestDocuments\"+FileName; Directory.CreateDirectory(Path.GetDirectoryName(path)); FileStream fs = new FileStream(path, FileMode.OpenOrCreate); XlsExportOptions options = new XlsExportOptions(); options.ExportHyperlinks = false; ASPxExporter.WriteXls(fs, options); fs.Close(); AddDropDownToExcel(path); return path; } //Adding The Dropdownlist […]

.net上传文件,然后无法检索 – 目录path?

我目前可以上传一个excel文件到上传目录: FileUploadExcel.SaveAs(Server.MapPath("~/Uploads/ExcelImport.xls")) 但是,当我尝试检索它打开它,它报告它找不到它: xlWorkBook = xlApp.Workbooks.Open("~/Uploads/ExcelImport.xlsx") 错误信息: 找不到'〜/ Uploads / ExcelImport.xlsx'。 检查文件名称的拼写,并validation文件位置是否正确。 如果您尝试从最近使用的文件列表中打开该文件,请确保该文件未被重命名,移动或删除。 任何人都知道可能是什么问题或以前看到过?

将多维列表插入到Excel表单时发生COMexception

我试图找出一种方法来插入一个multi dimensional C# list到excel sheet使用interop assembly我有我的列表中有多行数据分布在8列。 但是,当我执行我的查询,它把我COM Exception from HRESULT: 0x800A03EC ,我有以下代码 public void ExportStructureListToExcel(List<StructuresDS> listExport, string sheetName) { try { Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet1 = null; worksheet1 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets["Sheet1"]; worksheet1 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.ActiveSheet; for (int i = 1; i < listExport.Count + 1; i++) { for (int j […]

检查没有指定密码的工作表是否受到保护

当没有指定密码时,我一直无法find任何方法来检查Excel工作表是否处于保护模式。 我正在使用Excel Interop程序集与Office 2013一起工作。 如果有密码,您可以检查HasPassword属性,但是当没有密码时,不会出现任何方法来确定工作表是否当前受保护。 如果有什么方法可以确定用户何时select“取消保护”工作表,我还会接受基于事件的方法。 现在的麻烦是,当他们这样做,我不知道这是不受保护的,我不能适当地作出回应。 任何想法将不胜感激,谢谢!

为什么Excel.WorkSheet.Copy引发具有HRESULT的types为“System.Runtime.InteropServices.COMException”的第一次机会exception的exception:0x800A03EC

我在.NET中玩Excel Interop,我遇到了“Excel._WorkSheet.Copy(Type.Missing,Type.Missing)”的COMException。 行为非常奇怪:我从基于.xls的模板中复制工作表,并用指定的工作表(可能由用户从GUI中select)生成新的工作簿。 只要遇到Excel._Worksheet WorkSheet.Copy(Type.Missing,Type.Missing),就会抛出以下COMException。 “发生了types为”System.Runtime.InteropServices.COMException“的第一次机会exception。 附加信息:来自HRESULT的exception:0x800A03EC“ 以不同的方式尝试之后,我将手动指定的工作表复制到另一个新创build的Excel实例,并将此工作簿作为源代码提供给相同的代码。 在这里,它工作得很好! 它创build了一个精确的副本,打开一个新的Excel实例,我根本没有例外。 我不知道为什么会发生这种行为? 它是否与该工作表中的内容有关,如果是这样,相同和精确的工作表被复制到另一个新创build的空白工作表,一切工作正常。 我必须为用户提供的指定工作表生成报告,所以我必须从哪里打开模板化的工作簿,我需要复制那些指定的工作表,然后这些工作表将填入指定的数据。 我正在使用下面的代码: Excel._Worksheet WorkSheet = null; Excel.Application excel = new Excel.Application(); excel.Visible = true; excel.DisplayAlerts = false; _ExcelWorkbook = excel.Workbooks.Open(a_WorkbookName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,true); WorkSheet = (Excel.Worksheet)_ExcelWorkbook.Sheets[1]; WorkSheet.Copy(Type.Missing, Type.Missing); // throws COM Exception of […]

如何使用互操作命名Excel表

我在Excel文件中制作了一些表格。 我用这个代码同时做了很多: newSheet2 = (Microsoft.Office.Interop.Excel._Worksheet)newWorkbook_First.Sheets.Add(Type.Missing,Type.Missing,5,Type.Missing); …但我不知道如何单独命名。 我认为它必须这样做: newSheet2[2].name = "hello" 但是这给了一个错误。 我怎样才能做到这一点? private static Microsoft.Office.Interop.Excel.ApplicationClass appExcel; private static Workbook newWorkbook_First = null; private static _Worksheet newSheet2 = null; public void excel_create(String path) { try { appExcel = new Microsoft.Office.Interop.Excel.ApplicationClass(); appExcel.Visible = true; newWorkbook_First = appExcel.Workbooks.Add(1); newSheet2 = (Microsoft.Office.Interop.Excel._Worksheet)newWorkbook_First.Sheets.Add(Type.Missing,Type.Missing,5,Type.Missing); //How to name the sheets now? } […]

Excel#如何find一个特定的范围没有循环通过每一行/logging

我正在做一个工具,检查现有的Excel文件(> 20Klogging)是否包含特定列中的特定string。 到目前为止,我已经尝试使用for循环来检查每个单元格,但花了将近2分钟才find单元格。 例: row name price ————————- 7000 AAA 10 7001 AAA 5 7002 AAA 10 7003 AAA 5 7004 AAA 10 7005 AAA 10 7006 AAA 10 7007 BBB 5 7008 BBB 5 7009 AAA 10 7010 BBB 5 … 30000 AAA 10 我的伪代码: static void Main(string[] args) { var xlApp = new […]