C# NPOI使用

  1 HSSFWorkbook workbook = new HSSFWorkbook();
  2 HSSFSheet sheet = workbook.CreateSheet( "Sheet1") as HSSFSheet;
  3 IRow row = sheet.CreateRow(0);
  4     row.Height = 30 * 20;
  5 
  6 ICell cellTitle = row.CreateCell(0);
  7     titleHeader.Alignment = HorizontalAlignment.Center;
  8     titleHeader.VerticalAlignment = VerticalAlignment.Center;
  9     
 10         style.BorderBottom = BorderStyle.Thin;
 11         style.BorderLeft = BorderStyle.Thin;
 12         style.BorderRight = BorderStyle.Thin;
 13 
 14 IFont font = workbook.CreateFont();
 15     font.FontHeightInPoints = 14;
 16     font.FontName = "微软雅黑";
 17         font.IsBold = true;
 18 
 19 cellTitle.SetFont(font);
 20 cellTitle.SetCellValue(titleName)
 21 
 22 
 23 Color c = Color.FromArgb(215, 228, 188);
 24                 HSSFPalette palette = workbook.GetCustomPalette();
 25                 palette.SetColorAtIndex((short)63, c.R, c.G, c.B);
 26                 HSSFColor cellColor = palette.FindColor(c.R, c.G, c.B);
 27 style.FillPattern = FillPattern.SolidForeground;
 28 style.FillForegroundColor = cellColor.Indexed;
 29 
 30 region = new CellRangeAddress(3, 3, 15, columnsCount - 1);
 31 sheet.AddMergedRegion(region);
 32 ((HSSFSheet)sheet).SetEnclosedBorderOfRegion(region, BorderStyle.Thin, HSSFColor.Black.Index);
 33 
 34 
 35 
 36    //列宽自适应,只对英文和数字有效
 37                 for (int i = 0; i <= columnsCount; i++)
 38                 {
 39                     sheet.AutoSizeColumn(i);
 40                 }
 41 
 42                 //列宽自适应中文有效
 43                 for (int i = 0; i < 15; i++)
 44                 {
 45                     int columnWidth = sheet.GetColumnWidth(i) / 256;
 46                     for (int rowNum = 4; rowNum < 6 + rowsCount; rowNum++)
 47                     {
 48                         IRow currentRow;
 49                         //当前行未被使用过
 50                         if (sheet.GetRow(rowNum) == null)
 51                         {
 52                             currentRow = sheet.CreateRow(rowNum);
 53                         }
 54                         else
 55                         {
 56                             currentRow = sheet.GetRow(rowNum);
 57                         }
 58 
 59                         if (currentRow.GetCell(i) != null)
 60                         {
 61                             ICell currentCell = currentRow.GetCell(i);
 62                             int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;
 63                             if (columnWidth < length)
 64                             {
 65                                 columnWidth = length;
 66                             }
 67                         }
 68                     }
 69                     sheet.SetColumnWidth(i, columnWidth * 350);
 70                 }
 71 
 72                 //列宽自适应中文有效
 73                 for (int i = 15; i < columnsCount; i++)
 74                 {
 75                     int rowNum;
 76 
 77                     if (dtSource.Columns[i].ColumnName.Contains("/"))
 78                     {
 79                         rowNum = 4;
 80                     }
 81                     else
 82                     {
 83                         rowNum = 5;
 84                     }
 85 
 86                     int columnWidth = sheet.GetColumnWidth(i) / 256;
 87                     for (; rowNum < 6 + rowsCount; rowNum++)
 88                     {
 89                         IRow currentRow;
 90                         //当前行未被使用过
 91                         if (sheet.GetRow(rowNum) == null)
 92                         {
 93                             currentRow = sheet.CreateRow(rowNum);
 94                         }
 95                         else
 96                         {
 97                             currentRow = sheet.GetRow(rowNum);
 98                         }
 99 
100                         if (currentRow.GetCell(i) != null)
101                         {
102                             ICell currentCell = currentRow.GetCell(i);
103                             int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;
104                             if (columnWidth < length)
105                             {
106                                 columnWidth = length;
107                             }
108                         }
109                     }
110                     sheet.SetColumnWidth(i, columnWidth * 350);
111                 }
112 
113 
114  //若没有数据则建立空文档
115             if (workbook.NumberOfSheets == 0)
116             {
117                 HSSFSheet sheet = workbook.CreateSheet("Sheet1") as HSSFSheet;
118             }
119 
120   //写文件
121             MemoryStream ms = new MemoryStream();
122             workbook.Write(ms);
123             ms.Flush();
124             ms.Seek(0, SeekOrigin.Begin); //ms.Position = 0;
125 
126     return ms;
127 
128    if (j == 14 )
129     {
130     double db = 0;
131     if (double.TryParse(objVal.ToString(), out db))
132     {
133         cell.SetCellValue(db);
134     }
135     }
136     else
137     {
138     SetCellValue(cell, objVal);
139     }
140 
141 public static void SetCellValue(ICell eCell, object data)
142 {
143     string typeStr = data.GetType().ToString();
144 
145     switch (typeStr)
146     {
147         case "System.String":
148             eCell.SetCellValue(data.ToString());
149             break;
150         case "System.DateTime":
151             System.DateTime dateV;
152             System.DateTime.TryParse(data.ToString(), out dateV);
153             eCell.SetCellValue(dateV.ToString("yyyy/MM/dd"));
154             break;
155         case "System.Boolean":
156             bool boolV = false;
157             bool.TryParse(data.ToString(), out boolV);
158             eCell.SetCellValue(boolV);
159             break;
160         case "System.Int16":
161         case "System.Int32":
162         case "System.Int64":
163         case "System.Byte":
164             int intV = 0;
165             int.TryParse(data.ToString(), out intV);
166             eCell.SetCellValue(intV);
167             break;
168         case "System.Decimal":
169         case "System.Double":
170             double doubV = 0;
171             double.TryParse(data.ToString(), out doubV);
172             eCell.SetCellValue(doubV);
173             break;
174         case "System.DBNull":
175             eCell.SetCellValue("");
176             break;
177         default:
178             eCell.SetCellValue("");
179             break;
180     }
181 }

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.CreateSheet( "Sheet1") as HSSFSheet;

IRow row = sheet.CreateRow(0);

row.Height = 30 * 20;

ICell cellTitle = row.CreateCell(0);

titleHeader.Alignment = HorizontalAlignment.Center;

titleHeader.VerticalAlignment = VerticalAlignment.Center;

style.BorderBottom = BorderStyle.Thin;

style.BorderLeft = BorderStyle.Thin;

style.BorderRight = BorderStyle.Thin;

IFont font = workbook.CreateFont();

font.FontHeightInPoints = 14;

font.FontName = "微软雅黑";

font.IsBold = true;

cellTitle.SetFont(font);

cellTitle.SetCellValue(titleName)

Color c = Color.FromArgb(215, 228, 188);

HSSFPalette palette = workbook.GetCustomPalette();

palette.SetColorAtIndex((short)63, c.R, c.G, c.B);

HSSFColor cellColor = palette.FindColor(c.R, c.G, c.B);

style.FillPattern = FillPattern.SolidForeground;

style.FillForegroundColor = cellColor.Indexed;

region = new CellRangeAddress(3, 3, 15, columnsCount - 1);

sheet.AddMergedRegion(region);

((HSSFSheet)sheet).SetEnclosedBorderOfRegion(region, BorderStyle.Thin, HSSFColor.Black.Index);

//列宽自适应,只对英文和数字有效

for (int i = 0; i <= columnsCount; i++)

{

sheet.AutoSizeColumn(i);

}

//列宽自适应中文有效

for (int i = 0; i < 15; i++)

{

int columnWidth = sheet.GetColumnWidth(i) / 256;

for (int rowNum = 4; rowNum < 6 + rowsCount; rowNum++)

{

IRow currentRow;

//当前行未被使用过

if (sheet.GetRow(rowNum) == null)

{

currentRow = sheet.CreateRow(rowNum);

}

else

{

currentRow = sheet.GetRow(rowNum);

}

if (currentRow.GetCell(i) != null)

{

ICell currentCell = currentRow.GetCell(i);

int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;

if (columnWidth < length)

{

columnWidth = length;

}

}

}

sheet.SetColumnWidth(i, columnWidth * 350);

}

//列宽自适应中文有效

for (int i = 15; i < columnsCount; i++)

{

int rowNum;

if (dtSource.Columns[i].ColumnName.Contains("/"))

{

rowNum = 4;

}

else

{

rowNum = 5;

}

int columnWidth = sheet.GetColumnWidth(i) / 256;

for (; rowNum < 6 + rowsCount; rowNum++)

{

IRow currentRow;

//当前行未被使用过

if (sheet.GetRow(rowNum) == null)

{

currentRow = sheet.CreateRow(rowNum);

}

else

{

currentRow = sheet.GetRow(rowNum);

}

if (currentRow.GetCell(i) != null)

{

ICell currentCell = currentRow.GetCell(i);

int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;

if (columnWidth < length)

{

columnWidth = length;

}

}

}

sheet.SetColumnWidth(i, columnWidth * 350);

}

//若没有数据则建立空文档

if (workbook.NumberOfSheets == 0)

{

HSSFSheet sheet = workbook.CreateSheet("Sheet1") as HSSFSheet;

}

//写文件

MemoryStream ms = new MemoryStream();

workbook.Write(ms);

ms.Flush();

ms.Seek(0, SeekOrigin.Begin); //ms.Position = 0;

return ms;

if (j == 14 )

{

double db = 0;

if (double.TryParse(objVal.ToString(), out db))

{

cell.SetCellValue(db);

}

}

else

{

SetCellValue(cell, objVal);

}

public static void SetCellValue(ICell eCell, object data)

{

string typeStr = data.GetType().ToString();

switch (typeStr)

{

case "System.String":

eCell.SetCellValue(data.ToString());

break;

case "System.DateTime":

System.DateTime dateV;

System.DateTime.TryParse(data.ToString(), out dateV);

eCell.SetCellValue(dateV.ToString("yyyy/MM/dd"));

break;

case "System.Boolean":

bool boolV = false;

bool.TryParse(data.ToString(), out boolV);

eCell.SetCellValue(boolV);

break;

case "System.Int16":

case "System.Int32":

case "System.Int64":

case "System.Byte":

int intV = 0;

int.TryParse(data.ToString(), out intV);

eCell.SetCellValue(intV);

break;

case "System.Decimal":

case "System.Double":

double doubV = 0;

double.TryParse(data.ToString(), out doubV);

eCell.SetCellValue(doubV);

break;

case "System.DBNull":

eCell.SetCellValue("");

break;

default:

eCell.SetCellValue("");

break;

}

}