如果您在 Windows 窗体上创建名为 的 DataGridView,请RandomExcelRows
创建一个名为的按钮button1
并将以下代码放入Click事件处理程序中button1
:
private void button1_Click(object sender, EventArgs e)
{
Excel.Range[] rows = RandomRows(10, @"C:\test\whatever.xlsx");
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);
}
RandomExcelRows.DataSource = dt;
}
然后在下面创建一个名为RandomRows的方法,其中包含以下内容:
private Excel.Range[] RandomRows(int randomRowsToGet, string worksheetLocation, int worksheetNumber = 1, int lowestRow = 0, int highestRow = 99)
{
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;
}
该程序将从您指定的电子表格中获取随机数量的行(此数量由您指定)并将这些行放入您的 DataGridView。
它非常粗糙,需要重构,但它是您需要的基础。您还可以从文本框中获取包含文件位置的字符串,而不是对其进行硬编码,您想要的行数以及其他参数(例如最小行数和最大行数)也是如此。
同样,您可以使用OpenFileDialog来允许您的用户浏览到您的 excel 文件等。