| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using System.IO;
- using System.Data;
- using System;
- using NPOI.HSSF.UserModel;
- using NPOI.SS.UserModel;
- namespace 优软MES.DataOperate
- {
- class ExcelHandler
- {
- DataHelper dh = new DataHelper();
- /// <summary>
- /// 导出Excel
- /// </summary
- public void ExportExcel(DataTable dt,string FolderPath) {
- //创建一个内存流,用来接收转换成Excel的内容
- MemoryStream ms;
- ms = DataTableToExcel(dt);
- //以系统当前时间命名文件,FileMode.Create表示创建文件,FileAccess.Write表示拥有写的权限
- FileStream fs = new FileStream(@FolderPath+"\\"+DateTime.Now.ToString("yyyyMMddHHmmss") +".xls", FileMode.Create, FileAccess.Write);
- byte[] data = ms.ToArray();
- fs.Write(data, 0, data.Length);
- fs.Flush();
- //释放当前Excel文件,否则打开文件的时候会显示文件被占用
- ms.Dispose();
- fs.Dispose();
- }
- /// <summary>
- /// 导入Excel
- /// </summary>
- public void ImportExcel(DataTable DataTable, string TableName) {
-
- }
- /// <summary>
- /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件
- /// </summary>
- /// <param name="DataTable"></param>
- /// <returns></returns>
- public MemoryStream DataTableToExcel(DataTable DataTable) {
-
- //创建内存流
- MemoryStream ms=new MemoryStream();
- //创建一个Book,相当于一个Excel文件
- HSSFWorkbook book = new HSSFWorkbook();
- //Excel中的Sheet
- ISheet sheet = book.CreateSheet("sheet1");
- //获取行数量和列数量
- int rowNum = DataTable.Rows.Count;
- int columnNum = DataTable.Columns.Count;
- //设置列的宽度,根据首行的列的内容的长度来设置
- for (int i=0;i<columnNum;i++) {
- int dataLength = DataTable.Rows[0][i].ToString().Length;
- if (dataLength <= 3)
- {
- sheet.SetColumnWidth(i, dataLength * 1200);
- }
- else {
- sheet.SetColumnWidth(i, dataLength * 400);
- }
- }
- //将DataTable的值循环赋值给book,Aligment设置居中
- for (int i = 0; i < rowNum; i++) {
- IRow row = sheet.CreateRow(i);
- row.HeightInPoints = 20;
- for (int j = 0; j < columnNum; j++) {
- row.CreateCell(j).SetCellValue(DataTable.Rows[i][j].ToString());
- row.GetCell(j).CellStyle.Alignment = HorizontalAlignment.CENTER;
- }
- }
- //将book的内容写入内存流中返回
- book.Write(ms);
- return ms;
- }
- }
- }
|