코드에 오류가 없지만 Excel 파일이 붙어 있습니다. 나는 2 엑셀 파일을 사용했습니다, 하나는 abc30
이고 다른 하나는 abc31
입니다. abc30
이 필터링되어 abc31
으로 저장되었으므로 이제 abc31
에 액세스하고 싶지만 다시 abc30
데이터가 여기에옵니다. 코드를 확인하고 문제를 알려주십시오.Excel 파일이 백그라운드에서 실행 중이고 다른 Excel 파일에 액세스하는 동안 주 Excel 파일 데이터가 수신됩니다.
using System;
using System.Reflection;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelCalculation
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// button click
private void bindingbtn_Click(object sender, EventArgs e)
{
Excel.Application excelApp = new Excel.Application();
//ApplicationClass excelApplication = null;
Workbook excelWorkBook = null;
Worksheet targetSheet = null;
// Excel.Range salesTable=null ;
// Declare helper variables.
string workBookName = @"E:\Sample\abc30.xlsx";
string worksheetName = "DATA";
object useDefault = Type.Missing;
// Open the source workbook.
excelWorkBook =
excelApp.Workbooks.Open(workBookName,
useDefault, useDefault, useDefault, useDefault,
useDefault, useDefault, useDefault, useDefault,
useDefault, useDefault, useDefault, useDefault,
useDefault, useDefault);
string[] listFilter = new string[] { "abc, def (11)", "df, df (1111)", "Md, At (1388)", "Gho, Sram (183)" };
// Get the worksheet that contains the data to filter.
targetSheet =
(Worksheet)(excelWorkBook.Worksheets[worksheetName]);
Excel.Range range = targetSheet.UsedRange;
range.AutoFilter(18, "open", Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true);
range.AutoFilter(26, "saS", Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true);
range.AutoFilter(23, "abcd", Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true);
foreach (string abc in listFilter)
{
range.AutoFilter(27, listFilter, Excel.XlAutoFilterOperator.xlFilterValues, Type.Missing, true);
}
Excel.Range filteredRange = range.SpecialCells(Excel.XlCellType.xlCellTypeVisible);
excelApp.ActiveWorkbook.SaveAs(@"E:\Sample\abc31.xlsx");
excelWorkBook.Close(true, null, null);
excelApp.Quit();
Marshal.ReleaseComObject(targetSheet);
Marshal.ReleaseComObject(excelWorkBook);
Marshal.ReleaseComObject(excelApp);
FirstColumn(@"E:\Sample\abc31.xlsx");
}
// Firstcolumn (filename) method ,here i'm getting error
public static string[] FirstColumn(string filename)
{
//Here in this method , I'm not getting the data what i need ,
//i'm getting from main excel file data .please let me know where i'm wrong.
Excel.Application excelApp1 = new Excel.Application();
FileInfo fileInfo = new FileInfo(filename);
fileInfo.IsReadOnly = false;
if (excelApp1 == null)
{
Console.WriteLine("EXCEL could not be started. Check that your office installation and project references are correct.");
return null;
}
Workbook wb = excelApp1.Workbooks.Open(filename,
0, false, 5, "", "", false, XlPlatform.xlWindows, "\t", false, false, 0, true);
//wb.Path = filename;
Sheets sheets = wb.Worksheets;
Worksheet ws = (Worksheet)sheets.get_Item("DATA");
// getting 19th column
Range firstColumn = ws.UsedRange.Columns[19];
System.Array myvalues = (System.Array)firstColumn.Cells.Value;
string[] strArray = myvalues.OfType<object>().Select(o => o.ToString()).ToArray();
return strArray;
//return array will be having data from main excel i.e abc30, but (string filename - abc31)has only filtered data , i need that data , please help me out .
}
}
}
을 참조하십시오. 필터의 모든 데이터는 필터가 있기 때문에 여전히 존재합니다. 데이터를 제거하려는 경우 새 데이터에 필요한 데이터를 복사하는 것이 가장 좋습니다. – BugFinder
안녕하세요, 데이터를 필터링하고 저장하면 1000 개 중 10 개의 데이터 만 표시됩니다. 그래서 나는 abc31 파일에 10 개의 데이터를 저장했다. 그리고 나는 그것을 액세스하려고 노력하고있다. – CharanS
아니, 당신은 1000 라인의 데이터를 저장했다. 왜냐하면 필터는 단지 그 것이다. 단지 다른 990이 여전히 거기에 있다는 것을 보았을 뿐이다. 당신이 얻고있는 결과에 의해 입증 된대로 – BugFinder