Tag: office interop

将数组写入excel时出错

我一直使用这个相同的例程超过1.5年没有问题,然后突然今天我得到以下错误: 来自HRESULT的exception:0x800A03EC 我的代码读取一个excel范围到一个数组处理数组然后把数组放回Excel表。 它已经处理超过52000行,但今天在5000行失败! 我真的坚持这一点。 我的代码如下: Dim arrProcess As Array Dim intRowNum As Integer = xlWorksheet1.Cells.CurrentRegion.Rows.Count arrProcess = xlWorksheet1.Range("A2:AD" & intRowNum).Value 'do some processing 'Put array back to worksheet xlWorksheet1.Range("A2:AD" & intRowNum).Value = arrProcess 'empty array arrProcess = Nothing 即使我根本不处理这个数组,直接把它放回去,我也会得到一个错误。 干杯

使用Interop库在Excel中更快地添加图像

我只是简单地将数值放入Excel中,并将图像放入某些特定的单元格中。 我的代码示例看起来像这样; //sb is a String Builder and gets filled by loop xlWorkSheet.Cells[sheetRowPosition, 4] = sb.ToString(); xlWorkSheet.Shapes.AddPicture(loadPath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, float.Parse(((left) + 5).ToString()), float.Parse(((top) + 5).ToString()), 60, 60); 我已经完成了,就像循环一个集合并将数据插入单元格一样。 但是像龟一样慢。 所以我改变了我的想法,像这样刷新我的代码; private static void WriteArray(int rows, int columns, Worksheet worksheet) { var data = new object[rows, columns]; for (var row = 1; row <= rows; row++) […]

如何在wpf的excel的上下文菜单中打开window.xaml文件

我想在Excel的上下文菜单(右键单击)上打开一个新窗口。 为此,我打开了一个Excel文件,并在右键单击添加了Go to Link菜单,但是当我点击这个菜单时,它并没有打开一个窗口,并给出错误消息"STA thread attribute must be defined" 。 下面是代码。 Excel.Application _Excel = new Excel.Application(); Excel.Worksheet WS = new Excel.Worksheet(); Excel.Workbook WB; Object defaultArg = Type.Missing; try { _Excel.Visible = true; CommandBar cellbar = _Excel.CommandBars["Cell"]; CommandBarButton button =(CommandBarButton)cellbar.FindControl(MsoControlType.msoControlButton, 0, "MYRIGHTCLICKMENU", Missing.Value, Missing.Value); if (button == null) { // add the button button = (CommandBarButton)cellbar.Controls.Add(MsoControlType.msoControlButton, […]

Workbooks.Open方法抛出HRESULT:0x800A03EC

我打开一个Excel文件使用 object missing = Type.Missing; xlWorkBook = xlApp.Workbooks.Open(strFilePath, missing, false, missing, missing, missing, true, missing, missing, missing, missing, true, missing, missing, missing); 它会抛出HRESULT: 0x800A03EC 它与Office 2010工作正常,但在更新办公室库到版本15,当部署到办公室2013年的服务器。我开始得到这个消息。 我也曾尝试在DomConfig中授予Excel对象的权限,但它没有工作,

用Excel互操作,我检出一个文件后,如何检查回来?

我使用Excel的应用程序界面连接到Excel: excelApp.Workbooks.Open(fileName); excelApp.Workbooks.CheckOut(fileName); 但没有CheckIn方法。 如何检入先前签出的文件?

在excel中使用换行符导致问题,打开一个CSV文件

我的要求是从我的应用程序导出一些数据logging到一个Excel文件。为此,我创build了一个临时的.csv文件,然后在Excel中使用“QueryTableInterface”在Excel中打开并将其保存为Excel文件。 现在的问题是,如果用户在第一个位置input一个换行符而不是在每个换行符插入的新行字符中创build的excel,但是我希望如果任何列值有多行,而不是在Excel中的单个单元格内(最后)。 你可以请build议我一个办法/解决办法来处理这个问题。 我被困在这里。 My code looks like this: private void ConvertCSVToExcel(string tempLocation) { Microsoft.Office.Interop.Excel.Range range = m_xlSheet.get_Range("$A$1"); var m_objQryTables = m_xlSheet.QueryTables; var m_objQryTable = (Microsoft.Office.Interop.Excel._QueryTable)m_objQryTables.Add("TEXT;"+ tempLocation, range); m_objQryTable.FieldNames = true; m_objQryTable.RowNumbers = false; m_objQryTable.FillAdjacentFormulas = false; m_objQryTable.PreserveFormatting = true; m_objQryTable.RefreshOnFileOpen = false; m_objQryTable.RefreshStyle = Microsoft.Office.Interop.Excel.XlCellInsertionMode.xlInsertEntireRows; m_objQryTable.SavePassword = false; m_objQryTable.SaveData = true; m_objQryTable.AdjustColumnWidth = true; […]

通过VSTO加载项将新的XML源ListObject添加到Excel工作表中

我试图从XML插入数据到Excel工作表。 我使用以下方法: sheet.ListObjects.AddEx(SourceType: Excel.XlListObjectSourceType.xlSrcXml, Source: ???) 但我不知道应该提供什么资料。 我试图inputXML数据作为一个string,但没有奏效。 你有什么想法?

C#Microsoft.Office.Interop.Excel v15慢

我正在处理一个需要编辑excel文件的应用程序,执行各种操作,如: 将工作表中的粘贴部分复制到工作表 添加/编辑值 公式和macros在后台运行 这是一个最初使用Excel 2007开发的应用程序,但是现在我必须使用Excel 2013.不幸的是,我注意到,在安装了Excel 2013的计算机而不是Excel 2007中运行速度几乎慢了10倍。 因此,我创build了一个非常简单的基准testing应用程序,它随机生成数字,并将它们写入1000(行)* 15(列)= 15000个单元格。 结果令人失望,因为在Excel 2007中运行大约需要670毫秒,而在Excel 2013中运行需要大约3257毫秒(这是速度的5倍) 请find提供以上基准结果的代码: static void Main(string[] args) { var stopwatch = new Stopwatch(); stopwatch.Reset(); stopwatch.Start(); var excel = new Application(); excel.Visible = false; excel.DisplayAlerts = false; var workbooks = excel.Workbooks; var workbook = workbooks.Add(Type.Missing); var worksheets = workbook.Sheets; var worksheet = (Worksheet)worksheets[1]; […]

在C#生成的Excel工作表中自动调整列宽

我试图通过使用C#从SQL Server数据库中导出数据来自动调整Excel表格中的列和行。 我已经做了一些研究,我发现的解决scheme似乎没有任何影响。 //This code produces the correct Excel File with the expected content Excel.Application ExcelApp = new Excel.Application(); ExcelApp.Application.Workbooks.Add(Type.Missing); for (int i = 1; i < myDataTable.Rows.Count + 2; i++) { for (int j = 1; j < myDataTable.Columns.Count + 1; j++) { if (i == 1) { ExcelApp.Cells[i, j] = myColumnCollection[j – 1].ToString(); […]

Excel ExportAsFixedFormat(PDF)在导出的PDF中添加额外的空白工作表

我已经使用Excel ExportAsFixedFormat()成功导出了excel文件的PDF,但是这种方法在每个表格中添加了额外的空白表格。 如果我将工作簿保存为excel文件,则不包含任何多余的工作表。 使用的纸张范围是从A1-B6所以只有12个单元在使用。 这里是我如何将Excel工作簿导出为PDF。 xlNewWorkBook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, userSpecificFile, missing, missing, true, missing, missing, missing, missing); 我无法弄清楚为什么要添加这些额外的空白表。