2015-06-17 5 views
1

Я использую приложение excel addin для создания функции, которая может копировать столбцы из одного файла excel в другой. Вот код до сих пор, но когда я обрабатываю приложение, однако программа выводит пустой файл book.xls.Как скопировать столбцы excel из одного файла в другой?

private void button1_Click(object sender, EventArgs e) 
    { 
     Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
     Excel.Workbook xlWorkBook; 
     Excel.Workbook xlWorkBook2; 

     Excel.Worksheet xlWorkSheet; 
     Excel.Worksheet xlWsheet2; 

     Excel.Range xlSourceRange; 
     Excel.Range xlSourceRange1; 

     Excel.Range xlDestRange; 
     Excel.Range xlDestRange1; 

     xlWorkBook = xlApp.Workbooks.Open("C:/../../../../../../../Test.xls"); 


     xlWorkBook2 = xlApp.Workbooks.Open("C:/../../../../../../../Book1.xls"); 

     //~~> Display Excel 
     xlApp.Visible = true; 

     //~~> Set the source worksheet 
     xlWorkSheet = xlWorkBook.Sheets["Sheet1"]; 
     //~~> Set the destination worksheet 
     xlWsheet2 = xlWorkBook2.Sheets["Sheet1"]; 

     //~~> Set the source range 
     xlSourceRange = xlWorkSheet.Range["E15"].EntireColumn; 
     xlSourceRange1 = xlWorkSheet.Range["D15"].EntireColumn; 

     //~~> Set the destination range 
     xlDestRange = xlWsheet2.Range["A2"]; 
     xlDestRange1 = xlWsheet2.Range["B2"]; 


     xlSourceRange.Copy(Type.Missing); 

     xlDestRange.PasteSpecial(Excel.XlPasteType.xlPasteAll, 
Excel.XlPasteSpecialOperation.xlPasteSpecialOperationAdd, false, false); 


     xlSourceRange1.Copy(Type.Missing); 

     xlDestRange1.PasteSpecial(Excel.XlPasteType.xlPasteAll, 
Excel.XlPasteSpecialOperation.xlPasteSpecialOperationAdd, false, false); 

    } 

Я немного не уверен, как я идти об отслеживании ошибок, так как я в настоящее время в начинающий пользователь - работа с библиотеками Excel. Любое дальнейшее содействие было бы наиболее ценным.
Благодаря

+0

Вы сохраняете Workbook2 после копирования данных – PaulF

ответ

0

друга, пожалуйста, используйте ниже код, используйте экземпляр имя столбца этого запроса «выберите ColumnName из SheetName»

static void Main(string[] args) 
    { 
     string sourceFileName = @"C:\Test.xls"; 
     DataTable dataTable = loadSingleSheet(sourceFileName, "Employee"); 
     dataTable.Columns.Add("COLUMN_A"); 
     dataTable.Columns.Remove("COLUMN_B"); 
    } 

    private static OleDbConnection ReturnConnection(string fileName) 
    { 
     return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;Extended Properties=\"Excel 8.0;\""); 
    } 

    private static DataTable LoadSingleSheet(string fileName, string sheetName) 
    { 
     DataTable sheetData = new DataTable(); 
     using (OleDbConnection conn = ReturnConnection(fileName)) 
     { 
      conn.Open(); 

      OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select columnname from [" + sheetName + "]", conn); 
      sheetAdapter.Fill(sheetData); 
     } 
     return sheetData; 
    } 




private static void UpdateSingleSheet(string fileName, string sheetName, DataTable dataTable) 
    { 
     using (OleDbConnection conn = ReturnConnection(fileName)) 
     { 
      conn.Open(); 

      OleDbDataAdapter adapter = new OleDbDataAdapter(); 
      adapter.SelectCommand = new OleDbCommand("SELECT columnname FROM [" + sheetName + "]", conn); 

      OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); 

      adapter.UpdateCommand = builder.GetUpdateCommand(); 
      adapter.Update(dataTable); 
     } 
    } 

Я называю это так:

string destinationFileName = @"C:\TestNew.xls"; 
UpdateSingleSheet(destinationFileName, "Employee", dataTable); 

для получения дополнительной информации найти этот сайт. http://www.codedisqus.com/CyVjkWkUeg/copying-data-from-one-excel-file-to-another-using-c-adonet-ms-jet-returns-error-about-key-column.html

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