Reputation: 496
I have created a Console Application that reads from an Excel file. I want to take all of the document numbers and place it in an array for searching purposes. I am able to find the cell that contains the data "DocumentNumber" e.g. $F$5. How can I iterate through rows within column F? I have the following code:
public static void Main(string[] args)
{
string address;
string next;
try
{
Excel.ApplicationClass excel = new Excel.ApplicationClass();
Excel.Workbook workbook = excel.Workbooks.Open(@"D:\sample.xls", Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets["Sheet1"];
Excel.Range docNumber = worksheet.Cells.Find("DocumentNumber", worksheet.Cells[1, 1], Excel.XlFindLookIn.xlValues,
Excel.XlLookAt.xlPart, Missing.Value, Excel.XlSearchDirection.xlNext,
false, Missing.Value, Missing.Value);
if(docNumber != null){
address = docNumber.get_Address(true, true, Excel.XlReferenceStyle.xlA1, Missing.Value, Missing.Value);
Console.WriteLine(address);
}
}
catch (Exception err)
{
Console.WriteLine(err.Message);
}
}
Thanks in advance.
Upvotes: 2
Views: 8405
Reputation: 1534
kindly look into this.It iterates through each and every rows and the columns.
string address;
string next;
try {
Excel.ApplicationClass excel = new Excel.ApplicationClass();
object Missing = Type.Missing;
FileInfo fInfo = new FileInfo(@"D:\sample.xls");
if(fInfo.Exists) {
Excel.Workbook workbook = excel.Workbooks.Open(@"D:\sample.xls", Missing, Missing,
Missing, Missing, Missing, Missing, Missing,
Missing, Missing, Missing, Missing, Missing,
Missing, Missing);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets["Sheet1"];
Excel.Range docNumber = worksheet.Cells.Find("DDEC", worksheet.Cells[1, 1],
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Missing, Excel.XlSearchDirection.xlNext, false, Missing, Missing);
if(docNumber != null) {
address = docNumber.get_Address(true, true, Excel.XlReferenceStyle.xlA1, Missing, Missing);
docNumber = worksheet.UsedRange;
for (int rCnt = 1; rCnt <= docNumber.Rows.Count; rCnt++) {
for (int cCnt = 1; cCnt <= docNumber.Columns.Count; cCnt++) {
string str = (string)(docNumber.Cells[rCnt, cCnt] as Excel.Range).Value2;
MessageBox.Show(str);
}
}
Console.WriteLine(address);
}
}
}
Upvotes: 1
Reputation: 1534
please refer http://www.sharpprogrammer.com/dotnet/how-to-read-excel-file-in-c-net/
Upvotes: 0
Reputation: 3539
Wouldn't it be easier to read the data using OLEDB? Cleaner syntax, then you can foreach a DataTable that is returned.
Upvotes: 1