在 C# 或 VB.Net 中将 Excel 文件导入到 Datagridview

用户757321

嗨,我有包含以下字段名称的 excel 文件,mobileNo,TotalCoupen。我想在 datagridview 中使用唯一序列号导入这些字段。如果一个人总共有 5 个 coupen,它将显示 5 个 coupen 序列,如 (10001,10002,10003,10004, 10005)我还附上了图片 在此处输入图片说明

在此处输入图片说明

这是我的代码,此代码成功加载 excel 文件,但不生成 coupen 不,它仅导入 excel 文件

 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using System.IO;
 using System.Data.SqlClient;
 using System.Configuration;
 using System.Data.OleDb;
 using Excel = Microsoft.Office.Interop.Excel;

 namespace ReadExcelFileApp
 {
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        dataGridView1.Visible = false;
    }

    private void btnChoose_Click(object sender, EventArgs e)
    {
        string filePath = string.Empty;
        string fileExt = string.Empty;
        OpenFileDialog file = new OpenFileDialog();//open dialog to choose file
        if (file.ShowDialog() == System.Windows.Forms.DialogResult.OK)//if there is a file choosen by the user
        {
            filePath = file.FileName;//get the path of the file
            fileExt = Path.GetExtension(filePath);//get the file extension
            if (fileExt.CompareTo(".xls") == 0 || fileExt.CompareTo(".xlsx") == 0)
            {
                try
                {
                    DataTable dtExcel = new DataTable();
                    dtExcel = ReadExcel(filePath, fileExt);//read excel file
                    dataGridView1.Visible = true;
                    dataGridView1.DataSource = dtExcel;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
            else
            {
                MessageBox.Show("Please choose .xls or .xlsx file only.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);//custom messageBox to show error
            }
        }
    }

    private void btnClose_Click(object sender, EventArgs e)
    {
        this.Close();//to close the window(Form1)
    }

    public DataTable ReadExcel(string fileName, string fileExt)
    {
        string conn = string.Empty;
        DataTable dtexcel = new DataTable();
        if (fileExt.CompareTo(".xls") == 0)//compare the extension of the file
            conn = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HRD=Yes;IMEX=1';";//for below excel 2007
        else
            conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";//for above excel 2007
        using (OleDbConnection con = new OleDbConnection(conn))
        {
            try
            {
                OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select * from [Sheet1$]", con);//here we read data from sheet1
                oleAdpt.Fill(dtexcel);//fill excel data into dataTable
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
        return dtexcel;
    }
}

}

约翰·G

我不确定您为什么要添加这些恕我直言重复的行。一个简单的解决方案是DataTable用额外的行创建一个新的。循环遍历 excel 数据表中的所有行,然后total coupen为每个新行循环时间,然后如图所示更新coupen no同样,我不确定您为什么要这样做,但这是一种方法。下面的代码DataTableDataTable返回的ReadExcel方法中创建一个新这些AddDuplicates方法根据要求添加行。

dtExcel = ReadExcel(filePath, fileExt);//read excel file
DataTable dgvTable = AddDuplicates(dtExcel);
dataGridView1.Visible = true;
//dataGridView1.DataSource = dtExcel;
dataGridView1.DataSource = dgvTable;

private DataTable AddDuplicates(DataTable dt) {
  DataTable dtcopy = dt.Clone();
  int curCount = 100000;
  double coupenCount = 0;
  foreach(DataRow dr in dt.Rows) {
    coupenCount = (double)dr.ItemArray[2];
    for (int i = 0; i < coupenCount; i++) {
      dtcopy.Rows.Add(dr.ItemArray[0], dr.ItemArray[1], ++curCount);
    }
  }
  return dtcopy;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用vb.net中的特定列和行将csv文件导入到datagridview中

来自分类Dev

c# 将 excel 导入到 datagridview 不起作用

来自分类Dev

将特定数据从Excel导入到datagrid vb.net

来自分类Dev

如何在C#中将数据从Excel导入到SQL

来自分类Dev

在C#中将Datagridview导出到Excel

来自分类Dev

我无法将Excel导入到datagridview

来自分类Dev

使用VB.Net将CSV文件导入到Access数据库

来自分类Dev

C# DataGridView 到 Excel 文件错误

来自分类Dev

从excel导入特定数据到datagrid vb.net

来自分类Dev

从datagridview导出的excel文件在打开VB时显示错误

来自分类Dev

在C#或VB.NET中将Linq序列化为SQL结果到JSON(newtonsoft)

来自分类Dev

如何从datagridview获取值到变量VB.net

来自分类Dev

使用C#将Outlook导入到Excel

来自分类Dev

根据特定条件将数据从excel导入到DataGridview中

来自分类Dev

在vb.net或C#中将curl转换为webrequest

来自分类Dev

Vb.net导出GridView到Excel

来自分类Dev

无法在C#中将List <T>绑定到DataGridView!

来自分类Dev

vb.net在datagridview中加载excel数据错过日期值

来自分类Dev

使用 VB.NET 将数据从 DataGridView 导出为 Excel 表

来自分类Dev

将表格从Word文件导入到Excel文件

来自分类Dev

如何将Excel文件(XLSX)导入到mongoDB

来自分类Dev

如何将输出从R导入到Excel文件

来自分类Dev

是否可以将Excel文件导入到Smartsheet API?

来自分类Dev

限制从大型CSV文件导入到Excel中的行数

来自分类Dev

如何在excel宏或VB.Net中将JSON数据转换为xml数据

来自分类Dev

来自datagridview的VB.net .tostring(“ 0.000”)

来自分类Dev

VB.net DataGridview筛选2013

来自分类Dev

VB .NET使用SQL填充DataGridView

来自分类Dev

Datagridview总和列错误/ vb.net

Related 相关文章

热门标签

归档