2016-02-04 2 views
0

Я очень новичок в визуальной студии (в настоящее время использую Visual Studio 2013) , и я пытаюсь добавить строки из моего списка в существующий файл excel. Пример item в list = "item1, item2, item3, item4" Я пытаюсь добавить каждый элемент в каждую ячейку, начиная с последней строки файла excel. Приведенный ниже код работает, но он занимает слишком много времени на более низкой цене, Любая идея о том, как сделать это быстрее? Или есть лучший способ добавить из моего списка? Я не знаком вообще дело с объектом Excel.ApplicationСамый быстрый способ добавить существующий файл excel через визуальную студию

Вот мои коды:

   Dim excelApp As New Excel.Application 
       Dim excelWB As Excel.Workbook 
       Dim excelWS As Excel.Worksheet 
       excelWB = excelApp.Workbooks.Open(filename) 
       excelWS = excelWB.Worksheets("Data") 
       Dim lastrow = excelWS.Range("A1").SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row 

       'adding data from list2 to excel file 
       For l_index As Integer = 0 To Global_Variable.list2.Count - 1 
        lastrow += 1 
        Dim splitter = Global_Variable.list2.Item(l_index).Split(",") 
        excelWS.Cells((lastrow), (1)).Value = splitter(0) 
        excelWS.Cells((lastrow), (2)).Value = splitter(1) 
        excelWS.Cells((lastrow), (3)).Value = splitter(2) 
        excelWS.Cells((lastrow), (4)).Value = splitter(3) 
        excelWS.Cells((lastrow), (5)).Value = splitter(4) 
        excelWS.Cells((lastrow), (6)).Value = splitter(5) 
        excelWS.Cells((lastrow), (7)).Value = splitter(6) 
        excelWS.Cells((lastrow), (8)).Value = splitter(7) 
        excelWS.Cells((lastrow), (9)).Value = splitter(8) 
        excelWS.Cells((lastrow), (10)).Value = splitter(9) 
        excelWS.Cells((lastrow), (11)).Value = splitter(10) 
       Next 
       Dim Outputname = System.IO.Path.GetDirectoryName(filename) + "\RESULT_" + System.IO.Path.GetFileName(filename) 
       System.IO.File.Delete(Outputname) 
       excelWB.SaveAs(Outputname) 
       excelWB.Close(, Outputname) 
       excelApp.Quit() 

ответ

0

Если преобразовать List2 в 2 одномерный массив перед открытием Excel (или еще лучше просто создать его таким образом в первую очередь), вы можете просто определить переменную Range, которая имеет те же размеры & правильное местоположение (`" A "& lastrow '), а затем установить значение диапазона в обр.

Ex. С List2 в качестве переменной массива, которая содержит 100 элементов с вашими 11 атрибутами (BTW вы говорите VS2013, но вы не говорите, используете ли вы C#/VB/и т. Д. Исходя из использования DIM, я предположил, что VB)

Dim rng as Microsoft.Office.Interop.Excel.Range = Nothing 

'Set the range 
rng = excelWS.Range("A" & lastrow & ":K" & lastrow + list2.GetLength(0)) 

'Fill the range with the array 
rng.Value = list2 

Короткие, сладкие и обычно бегают довольно быстро

+0

Привет, большое спасибо за это. Это помогло мне, и теперь я понимаю намного больше, как работает Microsoft.Office.Interop. – steve

Смежные вопросы