Click here to Skip to main content
15,914,444 members

Comments by Mohammadsadiq994 (Top 1 by date)

Mohammadsadiq994 22-Dec-15 8:34am View    
protected void btnrandom_Click(object sender, EventArgs e)
{
Excel.Range[] rows = RandomRows(2, @"C:\test\Iris.xls");

DataTable dt = new DataTable();

bool ColumnsCreated = false;

foreach (Excel.Range row in rows)
{
object[,] values = row.Value;

int columnCount = values.Length;

if (!ColumnsCreated)
{
for (int i = 0; i < columnCount; i++)
{
DataColumn dc = new DataColumn(String.Format("Column {0}", i));
dt.Columns.Add(dc);
ColumnsCreated = true;
}
}

DataRow dr = dt.NewRow();

for (int i = 0; i < columnCount; i++)
{
dr[String.Format("Column {0}", i)] = values[1, i + 1];
}

dt.Rows.Add(dr);
grdrandom.DataSource = dt;
}

}
private Excel.Range[] RandomRows(int randomRowsToGet, string worksheetLocation, int worksheetNumber = 1, int lowestRow = 0, int highestRow = 1000)
{

Excel.Range[] rows = new Excel.Range[randomRowsToGet];

Excel.Application excel = new Excel.Application();
Excel.Workbook workbook = excel.Workbooks.Open(worksheetLocation);
Excel.Worksheet worksheet = workbook.Worksheets[worksheetNumber];

List<int> rowNumbers = new List<int>();

bool allUniqueNumbers = false;

Random random = new Random();

while (!allUniqueNumbers)
{
int nextNumber = random.Next(lowestRow, highestRow);

if (!rowNumbers.Contains(nextNumber))
rowNumbers.Add(nextNumber);

if (rowNumbers.Count == randomRowsToGet)
allUniqueNumbers = true;
}

for (int i = 0; i < randomRowsToGet; i++)
{
rows[i] = worksheet.UsedRange.Rows[rowNumbers[i]];
}

Marshal.ReleaseComObject(excel);

return rows;
}


I have tried this i have stuck the code is randomly reading the rows of excel file but it is not showing it to the gridview thanks