C#NPOI对已有Excel文件添加数据
时间: 2023-11-22 15:06:39 浏览: 56
使用 C# 的 NPOI 库可以实现对已有 Excel 文件添加数据。下面是一个简单的示例代码:
```csharp
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
// 打开已有 Excel 文件
FileStream fs = new FileStream("yourExcelFile.xlsx", FileMode.Open, FileAccess.ReadWrite);
XSSFWorkbook workbook = new XSSFWorkbook(fs);
ISheet sheet = workbook.GetSheetAt(0);
// 获取最后一行的行号
int lastRowNum = sheet.LastRowNum;
// 创建新行并添加数据
IRow newRow = sheet.CreateRow(lastRowNum + 1);
newRow.CreateCell(0).SetCellValue("Data1");
newRow.CreateCell(1).SetCellValue("Data2");
// 保存修改
workbook.Write(fs);
fs.Close();
```
这个示例代码打开一个名为 `yourExcelFile.xlsx` 的 Excel 文件,在第一个工作表中获取最后一行的行号,然后在其下一行创建一个新行并添加数据,最后保存修改。你需要根据你的实际情况修改代码中的文件名和数据。
相关问题
C#NPOI.Excel将EXCEL数据转换为DataSource
可以使用C#中的NPOI库来将Excel数据转换为DataSource。下面是一个示例代码:
```csharp
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
public static class ExcelUtility
{
public static DataTable ExcelToDataTable(string filePath)
{
IWorkbook workbook = null;
ISheet sheet = null;
DataTable data = new DataTable();
using (var file = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
if (filePath.EndsWith(".xls"))
{
workbook = new HSSFWorkbook(file);
}
else if (filePath.EndsWith(".xlsx"))
{
workbook = new XSSFWorkbook(file);
}
if (workbook != null)
{
sheet = workbook.GetSheetAt(0);
if (sheet != null)
{
var firstRow = sheet.GetRow(0);
int cellCount = firstRow.LastCellNum;
for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
{
var cell = firstRow.GetCell(i);
if (cell != null)
{
string columnName = cell.ToString();
if (!string.IsNullOrEmpty(columnName))
{
data.Columns.Add(columnName);
}
}
}
for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; ++i)
{
var row = sheet.GetRow(i);
if (row != null)
{
bool emptyRow = true;
DataRow dataRow = data.NewRow();
for (int j = row.FirstCellNum; j < cellCount; ++j)
{
if (row.GetCell(j) != null)
{
dataRow[j] = row.GetCell(j).ToString();
if (!string.IsNullOrEmpty(dataRow[j].ToString()))
{
emptyRow = false;
}
}
}
if (!emptyRow)
{
data.Rows.Add(dataRow);
}
}
}
}
}
}
return data;
}
}
```
这段代码会根据文件路径读取Excel文件,将第一个工作表转换为一个DataTable对象,并返回该对象。你可以使用该DataTable对象作为DataSource来绑定数据控件。
C#NPOI.Excel将EXCEL数据转换到dataGridView中
可以使用C#中的NPOI库和DataGridView控件来将Excel数据转换并显示在DataGridView中。下面是一个示例代码:
```csharp
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.Windows.Forms;
public static class ExcelUtility
{
public static void ExcelToDataGridView(string filePath, DataGridView dataGridView)
{
IWorkbook workbook = null;
ISheet sheet = null;
DataTable data = new DataTable();
using (var file = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
if (filePath.EndsWith(".xls"))
{
workbook = new HSSFWorkbook(file);
}
else if (filePath.EndsWith(".xlsx"))
{
workbook = new XSSFWorkbook(file);
}
if (workbook != null)
{
sheet = workbook.GetSheetAt(0);
if (sheet != null)
{
var firstRow = sheet.GetRow(0);
int cellCount = firstRow.LastCellNum;
for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
{
var cell = firstRow.GetCell(i);
if (cell != null)
{
string columnName = cell.ToString();
if (!string.IsNullOrEmpty(columnName))
{
data.Columns.Add(columnName);
}
}
}
for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; ++i)
{
var row = sheet.GetRow(i);
if (row != null)
{
bool emptyRow = true;
DataRow dataRow = data.NewRow();
for (int j = row.FirstCellNum; j < cellCount; ++j)
{
if (row.GetCell(j) != null)
{
dataRow[j] = row.GetCell(j).ToString();
if (!string.IsNullOrEmpty(dataRow[j].ToString()))
{
emptyRow = false;
}
}
}
if (!emptyRow)
{
data.Rows.Add(dataRow);
}
}
}
}
}
}
dataGridView.DataSource = data;
}
}
```
这段代码会根据文件路径读取Excel文件,将第一个工作表转换为一个DataTable对象,并将该对象作为DataGridView控件的DataSource来显示Excel数据。你只需要将DataGridView控件添加到窗体中即可。