NOPI用法之Excel基本操作
前言
使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。NOPI相關dll下載https://pan.baidu.com/s/1kBNQMuwxSmo7FQsvEV5Flw,提取碼:h2g6
- 創建ExcelSheet
/// <summary>
/// 創建Sheet
/// </summary>
/// <param name="hssfworkbook"></param>
/// <param name="sheetName">sheet名</param>
/// <returns></returns>
public List<HSSFSheet> creatExcelSheet(ref HSSFWorkbook hssfworkbook,List<string> sheetName)
{
List<HSSFSheet> ExcelSheet = new List<HSSFSheet>();
hssfworkbook = new HSSFWorkbook();//創建excel
HSSFSheet sheet = null;
for (int i = 0; i < sheetName.Count; i++)
{
sheet = (HSSFSheet)hssfworkbook.CreateSheet(sheetName[i]);//創建sheet
ExcelSheet.Add(sheet);
}
return ExcelSheet;
}
2、創建單元格
/// <summary>
/// 創建單元格
/// </summary>
/// <param name="ExcelSheet">sheet名</param>
/// <param name="rowIndex">第rowIndex行</param>
/// <param name="cellIndex">第cellIndex列</param>
/// <param name="cellValue">單元格值</param>
public void creatExcelCell(HSSFSheet ExcelSheet, int rowIndex, int cellIndex, string cellValue)
{
HSSFRow excelRow = (HSSFRow)ExcelSheet.CreateRow(rowIndex);//創建行
ICell excelCell= excelRow.CreateCell(cellIndex);//創建單元格
excelCell.SetCellValue(cellValue);
}
3、完成Excel創建
/// <summary>
/// 完成Excel創建
/// </summary>
/// <param name="hssfworkbook"></param>
/// <param name="excelPath">excel路徑</param>
/// <param name="excelName">excel名</param>
/// <param name="deleteCurrenExcel">若excel存在,是否刪除</param>
public void createExcelFinish(HSSFWorkbook hssfworkbook, string excelPath, string excelName, bool deleteCurrenExcel)
{
if (deleteCurrenExcel == true)
{
//若文件存在,則刪除
if (File.Exists(excelPath + excelName))
{
File.Delete(excelPath + excelName);
}
}
FileStream fileStream = new FileStream(excelPath + excelName, FileMode.Create);//創建文件流
hssfworkbook.Write(fileStream);//excel寫入文件流
fileStream.Close();//關閉文件流
MessageBox.Show("文件" + excelName + "創建完成!", "提示");
}
4、移除sheet
/// <summary>
/// 移除sheet
/// </summary>
/// <param name="workbook"></param>
/// <param name="sheetIndex">sheet索引</param>
public void removeSheet(HSSFWorkbook workbook,int sheetIndex)
{
workbook.RemoveSheetAt(sheetIndex);
}
5、按名稱獲得Sheet對象
/// <summary>
/// 按名稱獲得Sheet對象
/// </summary>
/// <param name="workbook"></param>
/// <param name="sheetName">sheet名稱</param>
/// <returns></returns>
public HSSFSheet getSheetByName(HSSFWorkbook workbook,string sheetName)
{
HSSFSheet sheet = (HSSFSheet)workbook.GetSheet(sheetName);
return sheet;
}
6、根據索引獲得Sheet對象
/// <summary>
/// 根據索引獲得Sheet對象
/// </summary>
/// <param name="workbook"></param>
/// <param name="sheetIndex">sheet索引</param>
/// <returns></returns>
public HSSFSheet getSheetByIndex(HSSFWorkbook workbook, int sheetIndex)
{
HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(sheetIndex);
return sheet;
}
7、獲得某一個ISheet的所有IRow
/// <summary>
/// 獲得某一個ISheet的所有IRow
/// </summary>
/// <param name="sheet"></param>
/// <returns></returns>
public IEnumerator getSheetRow(HSSFSheet sheet)
{
IEnumerator SheetRow = sheet.GetRowEnumerator();
return SheetRow;
}
8、 獲得某一特定行
/// <summary>
/// 獲得某一特定行
/// </summary>
/// <param name="sheet"></param>
/// <param name="rowIndex">行索引</param>
/// <returns></returns>
public HSSFRow getRowByIndex(HSSFSheet sheet,int rowIndex)
{
HSSFRow row =(HSSFRow)sheet.GetRow(rowIndex);
return row;
}
9、獲取Excel的單元格對象
/// <summary>
/// 獲取Excel的單元格對象
/// </summary>
/// <param name="sheet"></param>
/// <param name="rowIndex"></param>
/// <param name="cellIndex"></param>
/// <returns></returns>
public HSSFCell getExcelCell(HSSFSheet sheet, int rowIndex, int cellIndex)
{
HSSFCell cell = (HSSFCell)sheet.GetRow(rowIndex).GetCell(cellIndex);
return cell;
}
10、合併單元格
/// <summary>
/// 合併單元格
/// </summary>
/// <param name="sheet"></param>
/// <param name="regionDtata">合併單元格的左上角單元格及右下角單元格</param>
public void RegionCell(HSSFWorkbook workbook,int sheetIndex,int[] regionDtata)
{
HSSFSheet sheet=getSheetByIndex(workbook, sheetIndex);
sheet.AddMergedRegion(new CellRangeAddress(regionDtata[0], regionDtata[1], regionDtata[2], regionDtata[3]));
HSSFCell cell= getExcelCell(sheet, regionDtata[0], regionDtata[1]);
//設置居中
HSSFCellStyle style = (HSSFCellStyle)workbook.CreateCellStyle();
style.VerticalAlignment = VerticalAlignment.CENTER;
style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
cell.CellStyle = style;
}
11、示例執行NOPI創建Excel
private void 創建ToolStripMenuItem_Click(object sender, EventArgs e)
{
string excelPath = @"C:\Users\njtq\Desktop\NOPI\";
string excelName = "test.xls";
List<string> sheetName = new List<string>();
sheetName.Add("sheet1");
sheetName.Add("sheet2");
HSSFWorkbook hssfworkbook=null;
//創建sheet
List<HSSFSheet> ExcelSheet = creatExcelSheet(ref hssfworkbook, sheetName);
//創建cell
creatExcelCell(ExcelSheet[0], 0, 0, "標題");
int[] regionData = new int[4] { 0, 0, 0, 4 };
//合併單元格
RegionCell(hssfworkbook,0, regionData);
//創建完成
createExcelFinish(hssfworkbook, excelPath, excelName, true);
}