Tag: office interop

将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 […]

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” 我希望有人能把我从痛苦中解救出来。

*每个* Excel互操作对象是否需要使用Marshal.ReleaseComObject发布?

编辑 请参阅如何正确清理Excel互操作对象? 。 最近我遇到了这个问题,它提供了很多关于如何正确处理COM对象的问题的见解。 肯定检查超出第一个(标记)的答案,因为其他答案超越了简单的“不要使用两个点”和“使用ReleaseComObject为每个COM对象”的build议。 我首先回顾了这个问题,因为我意识到尽pipe在注册和部署所有COM对象方面非常全面,但是我的Excel实例仍然没有得到妥善处理。 事实certificate,有一些方法可以创build完全不明显的COM对象(即,即使您从不使用两个点,也可能会错过COM对象)。 此外,即使你是彻底的,如果你的项目增长超过一定的规模,错过一个COM对象的机会接近100%。 当发生这种情况时,很难find你错过的那个。 上面提到的问题的答案提供了一些确保Excel实例被closures的其他技巧。 同时,我对ComObjectManager (下面)做了一个小的(但是很重要的)更新,以反映我从上面链接的问题中学到了什么。 原来的问题 我已经看到了几个例子,其中Marshal.ReleaseComObject()与Excel Interop对象(即,来自命名空间Microsoft.Office.Interop.Excel的对象)一起使用,但我已经看到它在不同程度上使用。 我想知道如果我能摆脱这样的事情: var application = new ApplicationClass(); try { // do work with application, workbooks, worksheets, cells, etc. } finally { Marashal.ReleaseComObject(application) } 或者,如果我需要释放每个创build的对象,如下所示: public void CreateExcelWorkbookWithSingleSheet() { var application = new ApplicationClass(); var workbook = application.Workbooks.Add(_missing); var worksheets = workbook.Worksheets; […]

将数据写入Excel时如何使正确的date格式

Iam使用Office Interop将DataTable导出到Excel文件。 问题是,Excel不能识别date,而是显示数字。 在另一种情况下,我传递一个string,然后将其识别为date。 在这两种情况下,数据都搞砸了。 我试过NumberFormat @这应该存储在文本格式的单元格,但它也没有工作。 Application app = new Application(); app.Visible = false; app.ScreenUpdating = false; app.DisplayAlerts = false; app.EnableAnimations = false; app.EnableAutoComplete = false; app.EnableSound = false; app.EnableTipWizard = false; app.ErrorCheckingOptions.BackgroundChecking = false; Workbook wb = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet ws = (Worksheet)wb.Worksheets[1]; for (int j = 0; j < dt.Rows.Count; j++) { for […]

读取date时间值从Excel工作表中读取

当我试图从Excel表格中读取date时间types值时,它将返回一个double值。例如,如果想要读取这样的值'2007-02-19 14:11:45.730' ,那么我会得到一个doubletypes的值。我使用时间跨度转换这个双重价值,但没有成功完成,因为我只得到这个值'2007-02-19 12:00:00 AM' 现在我想要第一个完全相同的date时间值。 我的代码是这样的: – TimeSpan datefromexcel = new TimeSpan(Convert.ToInt32((range.Cells[rCnt, cCnt] as Excel.Range).Value2), 0, 0, 0); DateTime inputdate = new DateTime(1900, 1, 1).Add(datefromexcel); arrrow2[cCnt – 1] = inputdate.ToString(); 请帮忙!!! 谢谢。