EM_Y Ответов: 1

Как я могу использовать этот код поиска данных в файле excel без использования out spire.xls


Мой код предназначен для извлечения данных и извлечения их на первый лист новой книги excel ,
Я использую здесь wpf ,и spire.xls способ :

Я попытался найти что-то более подходящее, но не смог отладить свой код .
Ps: cellRAnge доступен только тогда, когда я использую spire.xls

Я хочу заменить его spire.xls использование с Excel.APP

using Spire.Xls;

        public void codespire()
        {
            Workbook newBook = new Workbook();
            Worksheet newSheet = newBook.Worksheets[0];
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("Information.xlsx");
            Worksheet sheet = workbook.Worksheets[0];
            int i = 1;
            int columnCount = sheet.Columns.Count();
            foreach (CellRange range in sheet.Columns[0])
            {
                if (range.Text == "teacher")
                {
                    CellRange sourceRange = sheet.Range[range.Row, 1, range.Row, columnCount];
                    CellRange destRange = newSheet.Range[i, 1, i, columnCount];
                    sheet.Copy(sourceRange, destRange, true);
                    i++;
                }
            }
            newBook.SaveToFile("NewForm.xlsx", ExcelVersion.Version2010);

        }
    }
}


Что я уже пробовал:

Я хочу заменить его spire.xls с помощью Excel.Способ применения:

using Excel = Microsoft.Office.Interop.Excel;



public void myCodeExcel.Appli()
{

 Excel.Application APP = new Microsoft.Office.Interop.Excel.Application();
        //Destination
 Microsoft.Office.Interop.Excel.Workbook newBook = APP.Workbooks.Open(excelFileDestinationPAth);
 
       Microsoft.Office.Interop.Excel.Worksheet newSheet = (Microsoft.Office.Interop.Excel.Worksheet) newBook.Worksheets[1];        
        
// source
    Microsoft.Office.Interop.Excel.Workbook workBook = APP.Workbooks.Open(excelFileSourcePAth);
 
       Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet) workbook.Worksheets[1];

int i =1 ;
 int columnCount = sheet.Columns.Count();
 foreach (Excel.Range r in (Excel.Range) sheet.Columns["A", Type.Missing])
            {
             
        Excel.Range   rang = r.Find(numSérie,sheet.Cells[i, 1],Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows,  Excel.XlSearchDirection.xlNext,
  false,false,false);
                string cellAdress = rang.get_Address(false, false, Excel.XlReferenceStyle.xlA1, false, false);
                string rangeCellSearch = sheet.Range[cellAdress].Value;
            

 if (rangeCellSearch == Teacher)        
{
//how can I copy range filter results to the second excel file ..

}

Afzaal Ahmad Zeeshan

Переписав код, Спайр сделал это. Если функция доступна из библиотеки, то как вы ожидаете найти эту функцию где-либо еще (не говоря уже об этих COM-классах).

В чем же вопрос?

EM_Y

Я только что обновил свой код , надеюсь, теперь все ясно ! очень благодарен за ваше внимание и желаю вам помощи !
Я хочу скопировать все строки результата в один простой код !

Kenneth Haugland

Не перепечатывайте свой вопрос, используйте Improve question, если у вас есть больше деталей.

ZurdoDev

Вы можете узнать много кода, просто записав макросы, а затем глядя на код.

1 Ответов

Рейтинг:
4

EM_Y

using Excel = Microsoft.Office.Interop.Excel;

public void my code () 

{
Excel.Application APP = new Microsoft.Office.Interop.Excel.Application();
        //Destination
 Microsoft.Office.Interop.Excel.Workbook newBook = APP.Workbooks.Open(excelFileDestinationPAth);
 
       Microsoft.Office.Interop.Excel.Worksheet newSheet = (Microsoft.Office.Interop.Excel.Worksheet) newBook.Worksheets[1];        
        
// source
    Microsoft.Office.Interop.Excel.Workbook workBook = APP.Workbooks.Open(excelFileSourcePAth);
 
       Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet) workbook.Worksheets[1];


///column where I'm gonna search my keysearch
 Excel.Range columSearchkey = (Excel.Range)sheet.Columns["A", Type.Missing];
   
 // my range result
  Excel.Range rangresult = columSearchkey.Find(numSérie,sheet.Cells[i, 1],Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows,  Excel.XlSearchDirection.xlNext,false,false,false);

// cell where I find my keysearch
  string cellAdress = rangresult.get_Address(false, false, Excel.XlReferenceStyle.xlA1, false, false);
//cell number
 string cellPositionnumber = cellAdress.Substring(1);
          
// data cell value result  
    string datacellvalueresult = sheet.Range[cellAdress].Value;
     
                 if (datacellvalueresult == searchkey)
                 {

//I copy data cell by cell because for luck in my case  the number range result is fix for three rows 

//first cell
 newSheet.get_Range("C34:E34").Value = sheet.get_Range(string.Concat("E", cellPositionnumber, ":", "G", cellPositionnumber)).Value2;
        .
        .
        .
//rest cells ...

}

}