C# DataTable 读取/汇出Excel (使用EPPlus)

1.使用EPPlus读取.xlsx档,需安装套件 using OfficeOpenXml;

public static DataTable ExcelImport(){    string path="你的excel路径"    //开启已存在的Excel档案    FileInfo existingFile = new FileInfo(path);    //new一个包存取.xlsx档    ExcelPackage package = new ExcelPackage(existingFile);    //因为EPPlus 升版和授权,需要加这行    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;    //选取第1个sheet    ExcelWorksheet worksheet = package.Workbook.Worksheets[0];    //取得所选sheet的列数和行数    int rows = worksheet.Dimension.End.Row;    int cols = worksheet.Dimension.End.Column;    //读取资料放入DataTable    DataTable dt = new DataTable(worksheet.Name);    DataRow dr = null;    //ExcelWorksheet在.net framwork 的index从1开始;在.net从0开始    for (int i = 1; i <= rows; i++)    {        if (i > 1)            dr = dt.Rows.Add();        for (int j = 1; j <= cols; j++)        {            //把第一列设为DataTable标头            if (i == 1)                dt.Columns.Add(worksheet.Cells[i, j].Value.ToString());            //剩下的写入DataTable,不要加ToString(),因为若储存格空白会导致NullReference            else                dr[j - 1] = worksheet.Cells[i, j].Value;        }    }    return dt;}

2.使用EPPlus汇出Excel(以WinForm DataGridView为例)

//建立datatableDataTable dt = new DataTable();//加入 Columnsdt.Columns.Add(new DataColumn(dataGridView.Columns[0].HeaderText, typeof(int)));dt.Columns.Add(new DataColumn(dataGridView.Columns[1].HeaderText, typeof(string)));dt.Columns.Add(new DataColumn(dataGridView.Columns[2].HeaderText, typeof(string)));dt.Columns.Add(new DataColumn(dataGridView.Columns[3].HeaderText, typeof(string)));//加入 Rows,Count-1是dataGridView有预设空白列for (int i = 0; i < dataGridView.Rows.Count - 1; i++){    DataRow dr = dt.NewRow();    for (int j = 0; j < dataGridView.Rows[i].Cells.Count; j++)        dr[j] = dataGridView.Rows[i].Cells[j].Value;    dt.Rows.Add(dr);}using (ExcelPackage package = new ExcelPackage()){    string path;    SaveFileDialog save = new SaveFileDialog();    save.FileName = $"{comboboxAward.Text}_{labelAwardQuota.Text}_{DateTime.Now:yyyyMMdd}.xlsx";    save.Filter = "(*.xlsx)|*.xlsx";    save.Title = "另存新档";    if (save.ShowDialog() == DialogResult.OK)    {        //取得使用者储存Excel的路径        path = Path.GetFullPath(save.FileName);        // 新增worksheet        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("工作表2");        //新增DataTable到sheet        worksheet.Cells["A1"].LoadFromDataTable(dt, true);        package.SaveAs(path);    }}

重点:
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("工作表2");
worksheet.Cells["A1"].LoadFromDataTable(dt, true);
package.SaveAs(path);


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章