天天看點

簡單 Excel 的導入導出 (通過 NPOI)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using Newtonsoft.Json.Linq;

using System.IO;

using NPOI.HSSF.UserModel;

using NPOI.SS.UserModel;

using NPOI.XSSF.UserModel;

using System.Collections;

using NPOI.HSSF.Util;

using System.Drawing;

/// <summary>

///ExcelHeaper ????瑕?璇存??

/// </summary>

public class ExcelHeaper

{

? ? public static int thisRows = 0;

? ? public ExcelHeaper()

? ? {

? ? ? ? //

? ? ? ? //TODO: ?ㄦ?ゅ?娣誨???????芥?伴?昏?

? ? ? ? //

? ? }

? ? /// <summary> ?

? ? /// 灏?excel瀵煎?ュ??atatable ?

? ? /// </summary> ?

? ? /// <param name="filePath">excel璺?寰?</param> ?

? ? /// <param name="isColumnName">绗?涓?琛???????????</param> ?

? ? /// <returns>杩???datatable</returns> ?

? ? public static DataTable ExcelToDataTable(string filePath, bool isColumnName)

? ? {

? ? ? ? DataTable dataTable = null;

? ? ? ? FileStream fs = null;

? ? ? ? DataColumn column = null;

? ? ? ? DataRow dataRow = null;

? ? ? ? IWorkbook workbook = null;

? ? ? ? ISheet sheet = null;

? ? ? ? IRow row = null;

? ? ? ? ICell cell = null;

? ? ? ? int startRow = 0;

? ? ? ? try

? ? ? ? {

? ? ? ? ? ? using (fs = File.OpenRead(filePath))

? ? ? ? ? ? // ?using (fs = File.Copy(filePath))

? ? ? ? ? ? {

? ? ? ? ? ? ? ? // 2007???? ?

? ? ? ? ? ? ? ? if (filePath.IndexOf(".xlsx") > 0)

? ? ? ? ? ? ? ? ? ? workbook = new XSSFWorkbook(fs);

? ? ? ? ? ? ? ? // 2003???? ?

? ? ? ? ? ? ? ? //if (filePath.IndexOf(".xls") > 0)

? ? ? ? ? ? ? ? // ? ?workbook = new HSSFWorkbook(fs);

? ? ? ? ? ? ? ? if (workbook != null)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? sheet = workbook.GetSheetAt(0);//璇誨??绗?涓?涓?sheet锛?褰??朵???浠ュ驚??璇誨??姣?涓?sheet ?

? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? dataTable = new DataTable();

? ? ? ? ? ? ? ? ? ? if (sheet != null)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? int rowCount = sheet.LastRowNum;//?昏????

? ? ? ? ? ? ? ? ? ? ? ? if (rowCount > 0)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? IRow firstRow = sheet.GetRow(0);//绗?涓?琛? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? int cellCount = firstRow.LastCellNum;//?????

? ? ? ? ? ? ? ? ? ? ? ? ? ? //??寤?atatable???? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? if (isColumnName)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? startRow = 1;//濡???绗?涓?琛???????锛???浠?绗?浜?琛?寮?濮?璇誨?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = firstRow.FirstCellNum; i < cellCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell = firstRow.GetCell(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell != null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell.StringCellValue != null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? column = new DataColumn(cell.StringCellValue);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Columns.Add(column);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = firstRow.FirstCellNum; i < cellCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? column = new DataColumn("column" + (i + 1));

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Columns.Add(column);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? //濉???琛? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = startRow; i <= rowCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row = sheet.GetRow(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (row == null) continue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow = dataTable.NewRow();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int j = row.FirstCellNum; j < cellCount; ++j)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell = row.GetCell(j);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell == null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = "";

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,) ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? switch (cell.CellType)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.BLANK:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = "";

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.NUMERIC:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? short format = cell.CellStyle.DataFormat;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //瀵規?堕?存?煎?锛?2015.12.5??2015/12/5??2015-12-5绛?锛???澶??? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (format == 14 || format == 31 || format == 57 || format == 58 || format == 186)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if (format == 20 || format == 185 || format == 184)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue.ToString("HH:mm");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if (format == 22)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue.ToString("yyyy/MM/dd HH:mm");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.NumericCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.FORMULA:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.NumericCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? catch

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.StringCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.STRING:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.StringCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.CellFormula;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Rows.Add(dataRow);

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return dataTable;

? ? ? ? }

? ? ? ? catch (Exception ex)

? ? ? ? {

? ? ? ? ? ? HistoryHelper.SaveError("璇誨??Excel寮?甯?, ex.ToString());

? ? ? ? ? ? if (fs != null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? fs.Close();

? ? ? ? ? ? }

? ? ? ? ? ? return null;

? ? ? ? }

? ? }

? ? /// <summary> ?

? ? /// ?規??琛ㄥ??绉闆?excel瀵煎?ュ??atatable ?

? ? /// </summary> ?

? ? /// <param name="filePath">excel璺?寰?</param> ?

? ? /// <param name="isColumnName">绗?涓?琛???????????</param> ?

? ? /// <returns>杩???datatable</returns> ?

? ? public static DataTable ExcelToDataTableByName(string filePath, bool isColumnName,string TableName)

? ? {

? ? ? ? DataTable dataTable = null;

? ? ? ? FileStream fs = null;

? ? ? ? DataColumn column = null;

? ? ? ? DataRow dataRow = null;

? ? ? ? IWorkbook workbook = null;

? ? ? ? ISheet sheet = null;

? ? ? ? IRow row = null;

? ? ? ? ICell cell = null;

? ? ? ? int startRow = 0;

? ? ? ? try

? ? ? ? {

? ? ? ? ? ? using (fs = File.OpenRead(filePath))

? ? ? ? ? ? // ?using (fs = File.Copy(filePath))

? ? ? ? ? ? {

? ? ? ? ? ? ? ? // 2007???? ?

? ? ? ? ? ? ? ? if (filePath.IndexOf(".xlsx") > 0)

? ? ? ? ? ? ? ? ? ? workbook = new XSSFWorkbook(fs);

? ? ? ? ? ? ? ? // 2003???? ?

? ? ? ? ? ? ? ? //if (filePath.IndexOf(".xls") > 0)

? ? ? ? ? ? ? ? // ? ?workbook = new HSSFWorkbook(fs);

? ? ? ? ? ? ? ? if (workbook != null)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? // sheet = workbook.GetSheetAt(0);//璇誨??绗?涓?涓?sheet锛?褰??朵???浠ュ驚??璇誨??姣?涓?sheet ?

? ? ? ? ? ? ? ? ? ? ?sheet = workbook.GetSheet(TableName);//璇誨???哄????绉扮??sheet锛?

? ? ? ? ? ? ? ? ? ? dataTable = new DataTable();

? ? ? ? ? ? ? ? ? ? if (sheet != null)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? int rowCount = sheet.LastRowNum;//?昏????

? ? ? ? ? ? ? ? ? ? ? ? if (rowCount > 0)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? IRow firstRow = sheet.GetRow(0);//绗?涓?琛? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? int cellCount = firstRow.LastCellNum;//?????

? ? ? ? ? ? ? ? ? ? ? ? ? ? //??寤?atatable???? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? if (isColumnName)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? startRow = 1;//濡???绗?涓?琛???????锛???浠?绗?浜?琛?寮?濮?璇誨?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = firstRow.FirstCellNum; i < cellCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell = firstRow.GetCell(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell != null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell.StringCellValue != null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? column = new DataColumn(cell.StringCellValue);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Columns.Add(column);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = firstRow.FirstCellNum; i < cellCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? column = new DataColumn("column" + (i + 1));

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Columns.Add(column);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? //濉???琛? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = startRow; i <= rowCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row = sheet.GetRow(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (row == null) continue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow = dataTable.NewRow();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int j = row.FirstCellNum; j < cellCount; ++j)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell = row.GetCell(j);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell == null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = "";

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,) ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? switch (cell.CellType)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.BLANK:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = "";

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.NUMERIC:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? short format = cell.CellStyle.DataFormat;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //瀵規?堕?存?煎?锛?2015.12.5??2015/12/5??2015-12-5绛?锛???澶??? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (format == 14 || format == 31 || format == 57 || format == 58 || format == 186)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if (format == 20 || format == 185 || format == 184)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue.ToString("HH:mm");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if (format == 22)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue.ToString("yyyy/MM/dd HH:mm");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.NumericCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.FORMULA:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.NumericCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? catch

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.StringCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.STRING:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.StringCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.CellFormula;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Rows.Add(dataRow);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? catch (Exception ex)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HistoryHelper.SaveError("error", ex.ToString());

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?continue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return dataTable;

? ? ? ? }

? ? ? ? catch (Exception ex)

? ? ? ? {?

? ? ? ? ? ? HistoryHelper.SaveError("璇誨??Excel寮?甯?, ex.ToString());

? ? ? ? ? ? if (fs != null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? fs.Close();

? ? ? ? ? ? }

? ? ? ? ? ? return null;

? ? ? ? }

? ? }

? ? /// <summary> ?

? ? /// 灏?excel瀵煎?ュ??atatableb骞惰煩杩????㈠?哄??琛??? ? ? /// </summary> ?

? ? /// <param name="filePath">excel璺?寰?</param> ?

? ? /// <param name="isColumnName">绗?涓?琛???????????</param> ?

? ? /// <returns>杩???datatable</returns> ?

? ? public static DataTable ExcelToDataTable(string filePath, bool isColumnName,int rows =0)

? ? {

? ? ? ? DataTable dataTable = null;

? ? ? ? FileStream fs = null;

? ? ? ? DataColumn column = null;

? ? ? ? DataRow dataRow = null;

? ? ? ? IWorkbook workbook = null;

? ? ? ? ISheet sheet = null;

? ? ? ? IRow row = null;

? ? ? ? ICell cell = null;

? ? ? ? int startRow = 0;

? ? ? ? try

? ? ? ? {

? ? ? ? ? ? using (fs = File.OpenRead(filePath))

? ? ? ? ? ? // ?using (fs = File.Copy(filePath))

? ? ? ? ? ? {

? ? ? ? ? ? ? ? // 2007???? ?

? ? ? ? ? ? ? ? if (filePath.IndexOf(".xlsx") > 0)

? ? ? ? ? ? ? ? ? ? workbook = new XSSFWorkbook(fs);

? ? ? ? ? ? ? ? // 2003???? ?

? ? ? ? ? ? ? ? //if (filePath.IndexOf(".xls") > 0)

? ? ? ? ? ? ? ? // ? ?workbook = new HSSFWorkbook(fs);

? ? ? ? ? ? ? ? if (workbook != null)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? sheet = workbook.GetSheetAt(0);//璇誨??绗?涓?涓?sheet锛?褰??朵???浠ュ驚??璇誨??姣?涓?sheet ?

? ? ? ? ? ? ? ? ? ? dataTable = new DataTable();

? ? ? ? ? ? ? ? ? ? if (sheet != null)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? int rowCount = sheet.LastRowNum;//?昏????

? ? ? ? ? ? ? ? ? ? ? ? if (rowCount > 0)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? IRow firstRow = sheet.GetRow(0);//绗?涓?琛? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? int cellCount = firstRow.LastCellNum;//?????

? ? ? ? ? ? ? ? ? ? ? ? ? ? thisRows = rowCount;

? ? ? ? ? ? ? ? ? ? ? ? ? ? //??寤?atatable???? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? if (isColumnName)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? startRow = 1;//濡???绗?涓?琛???????锛???浠?绗?浜?琛?寮?濮?璇誨?? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = firstRow.FirstCellNum; i < cellCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell = firstRow.GetCell(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell != null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell.StringCellValue != null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? column = new DataColumn(cell.StringCellValue);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Columns.Add(column);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = firstRow.FirstCellNum; i < cellCount; ++i)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? column = new DataColumn("column" + (i + 1));

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Columns.Add(column);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? //濉???琛? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = thisRows; i <= rowCount; i++)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row = sheet.GetRow(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (row == null) continue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow = dataTable.NewRow();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int j = row.FirstCellNum; j < cellCount; ++j)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cell = row.GetCell(j);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (cell == null)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = "";

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,) ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? switch (cell.CellType)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.BLANK:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = "";

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.NUMERIC:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? short format = cell.CellStyle.DataFormat;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //瀵規?堕?存?煎?锛?2015.12.5??2015/12/5??2015-12-5绛?锛???澶??? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (format == 14 || format == 31 || format == 57 || format == 58 || format == 186)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if (format == 20 || format == 185 || format == 184)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue.ToString("HH:mm");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if (format == 22)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.DateCellValue.ToString("yyyy/MM/dd HH:mm");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.NumericCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.FORMULA:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.NumericCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? catch

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.StringCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.STRING:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.StringCellValue;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = cell.CellFormula;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataTable.Rows.Add(dataRow);

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? thisRows = rowCount;

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return dataTable;

? ? ? ? }

? ? ? ? catch (Exception ex)

? ? ? ? {

? ? ? ? ? ? HistoryHelper.SaveError("璇誨??Excel寮?甯?, ex.ToString());

? ? ? ? ? ? if (fs != null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? fs.Close();

? ? ? ? ? ? }

? ? ? ? ? ? return null;

? ? ? ? }

? ? }

?

? ? /// <summary>

? ? /// ??浠惰??烘?

? ? /// </summary>

? ? /// <param name="bytes"></param>

? ? public static ?void OutputClient(byte[] bytes)

? ? {

? ? ? ? HttpResponse response = HttpContext.Current.Response;

? ? ? ? response.Buffer = true;

? ? ? ? response.Clear();

? ? ? ? response.ClearHeaders();

? ? ? ? response.ClearContent();

? ? ? ? response.ContentType = "application/vnd.ms-excel";

? ? ? ? response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")));

? ? ? ? response.Charset = "GB2312";

? ? ? ? response.ContentEncoding = Encoding.GetEncoding("GB2312");

? ? ? ? response.BinaryWrite(bytes);

? ? ? ? response.Flush();

? ? ? ? response.Close();

? ? }

? ? /// <summary>

? ? /// datatable 杞???負jarry

? ? /// </summary>

? ? /// <param name="dt"></param>

? ? /// <returns></returns>

? ? public static JArray DataTableJArray(DataTable dt)

? ? {

? ? ? ? JArray ja = new JArray();

? ? ? ? foreach (DataRow row in dt.Rows)

? ? ? ? {

? ? ? ? ? ? JObject jo = new JObject();

? ? ? ? ? ? foreach (DataColumn col in dt.Columns)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? jo[col.ColumnName] = row[col.ColumnName].ToString();

? ? ? ? ? ? }

? ? ? ? ? ? ja.Add(jo);

? ? ? ? }

? ? ? ? return ja;

? ? }

? ? /// <summary>

? ? /// ?版??瀵煎?? ? ? /// </summary>

? ? /// <param name="dt"></param>

? ? /// <returns></returns>

? ? public static string GetCSV(JArray ja, Dictionary<string, object> StrDate)

? ? {

? ? ? ? HttpContext context = HttpContext.Current;

? ? ? ? string Code = StrDate["fieldCode"].ToString();

? ? ? ? string Name = StrDate["fieldName"].ToString();

? ? ? ? string ExcelName = StrDate["ExcelName"].ToString();

? ? ? ? string[] fieldCode = Code.Split(',');

? ? ? ? string[] fieldName = Name.Split(',');

? ? ? ? JArray jaTH = new JArray();

? ? ? ? for (int i = 0; i < fieldCode.Length; i++)

? ? ? ? {

? ? ? ? ? ? JObject joTH = new JObject();

? ? ? ? ? ? joTH["Index"] = i;

? ? ? ? ? ? joTH["FieldCode"] = fieldCode[i];

? ? ? ? ? ? joTH["FieldName"] = fieldName[i];

? ? ? ? ? ? joTH["FieldDataType"] = "nvarchar";

? ? ? ? ? ? joTH["Display"] = true;

? ? ? ? ? ? joTH["Width"] = 100;

? ? ? ? ? ? joTH["ForeColor"] = "#000000";

? ? ? ? ? ? joTH["BackColor"] = "#FFFFFF";

? ? ? ? ? ? jaTH.Add(joTH);

? ? ? ? }

? ? ? ??

? ? ? ? JObject queryData = new JObject();

? ? ? ? queryData["MasterData"] = ja;

? ? ? ? JObject tableHead = new JObject();

? ? ? ? tableHead["TableHeader"] = jaTH;

? ? ? ? string sheetName = ExcelName + DateTime.Now.ToString("yyyyMMddHHmmss");

? ? ? ? MemoryStream ms = new MemoryStream();

? ? ? ? GetExcelMemoryStream(tableHead, queryData, ms);

? ? ? ? ms.Flush();

? ? ? ? ms.Position = 0;

? ? ? ? context.Response.Clear();

? ? ? ? context.Response.Charset = "utf-8";

? ? ? ? context.Response.Buffer = false;

? ? ? ? context.Response.ContentEncoding = System.Text.Encoding.UTF8;

? ? ? ? context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(sheetName) + ".xls");

? ? ? ? context.Response.BinaryWrite(ms.ToArray());

? ? ? ? context.ApplicationInstance.CompleteRequest();

? ? ? ? context.Response.End();

? ? ? ? ms.Close();

? ? ? ? return string.Empty;

? ? }

? ? /// <summary>

? ? /// ????Excel???ユ?

? ? /// </summary>

? ? /// <param name="tableHead"></param>

? ? /// <param name="queryData"></param>

? ? /// <param name="ms"></param>

? ? public static void GetExcelMemoryStream(JObject tableHead, JObject queryData, MemoryStream ms)

? ? {

? ? ? ? JArray ja = (JArray)tableHead["TableHeader"];

? ? ? ? JArray jaTH = new JArray();

? ? ? ? foreach (JObject jo in ja.OrderBy(f => (int)f["Index"]))

? ? ? ? {

? ? ? ? ? ? jaTH.Add(jo);

? ? ? ? }

? ? ? ? //澶?????瀹?杞??㈡??????杩??跺苟?懼?ヤ?涓??奧?

? ? ? ? //int[] color = new int[3];

? ? ? ? //color[0] = Integer.parseInt(str.substring(1, 3), 16);

? ? ? ? //color[1] = Integer.parseInt(str.substring(3, 5), 16);

? ? ? ? //color[2] = Integer.parseInt(str.substring(5, 7), 16);

? ? ? ? ??瀹?涔?棰??猜?

? ? ? ? //HSSFPalette palette = workbook.getCustomPalette();

? ? ? ? //palette.setColorAtIndex(HSSFColor.BLACK.index, (byte)color[0], (byte)color[1], (byte)color[2]);

? ? ? ? 灏???瀹?涔???棰??插??ヨ??ヂ?

? ? ? ? //HSSFFont font = workbook.createFont();

? ? ? ? //font.setColor(HSSFColor.BLACK.index);

? ? ? ? //HSSFCellStyle cellStyle = workbook.createCellStyle();

? ? ? ? //cellStyle.setFont(font);?

? ? ? ? for (int i = jaTH.Count - 1; i >= 0; i--)

? ? ? ? {

? ? ? ? ? ? string display = jaTH[i]["Display"].ToString().ToUpper();

? ? ? ? ? ? if (display == "FLASE" || display == "N") jaTH.RemoveAt(i);

? ? ? ? }

? ? ? ? JObject joMM = (JObject)tableHead["ModuleMaster"];

? ? ? ? JArray jaData = (JArray)queryData["MasterData"];

? ? ? ? HSSFWorkbook hssfworkbook = new HSSFWorkbook();

? ? ? ? HSSFSheet sheet1 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet1");

? ? ? ? //??瀹?涔?棰??? ? ? ? ? Hashtable htColor = new Hashtable();

? ? ? ? foreach (JObject joTH in jaTH)

? ? ? ? {

? ? ? ? ? ? string fcStr = joTH["ForeColor"].ToString();

? ? ? ? ? ? if (fcStr != "none" && !htColor.ContainsKey(fcStr))

? ? ? ? ? ? {

? ? ? ? ? ? ? ? int[] fc = new int[3];

? ? ? ? ? ? ? ? fc[0] = Convert.ToInt32(fcStr.Substring(1, 2), 16);

? ? ? ? ? ? ? ? fc[1] = Convert.ToInt32(fcStr.Substring(3, 2), 16);

? ? ? ? ? ? ? ? fc[2] = Convert.ToInt32(fcStr.Substring(5, 2), 16);

? ? ? ? ? ? ? ? short fcIndex = GetXLColour(hssfworkbook, Color.FromArgb(fc[0], fc[1], fc[2]));

? ? ? ? ? ? ? ? htColor.Add(fcStr, fcIndex);

? ? ? ? ? ? }

? ? ? ? ? ? string bcStr = joTH["BackColor"].ToString();

? ? ? ? ? ? if (bcStr != "none" && !htColor.ContainsKey(bcStr))

? ? ? ? ? ? {

? ? ? ? ? ? ? ? int[] bc = new int[3];

? ? ? ? ? ? ? ? bc[0] = Convert.ToInt32(bcStr.Substring(1, 2), 16);

? ? ? ? ? ? ? ? bc[1] = Convert.ToInt32(bcStr.Substring(3, 2), 16);

? ? ? ? ? ? ? ? bc[2] = Convert.ToInt32(bcStr.Substring(5, 2), 16);

? ? ? ? ? ? ? ? short bcIndex = GetXLColour(hssfworkbook, Color.FromArgb(bc[0], bc[1], bc[2]));

? ? ? ? ? ? ? ? htColor.Add(bcStr, bcIndex);

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? //琛ㄥご?峰?

? ? ? ? ICellStyle csHead = hssfworkbook.CreateCellStyle();

? ? ? ? csHead.WrapText = false;

? ? ? ? csHead.VerticalAlignment = VerticalAlignment.CENTER;

? ? ? ? csHead.Alignment = HorizontalAlignment.CENTER;

? ? ? ? csHead.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.GREY_25_PERCENT.index;

? ? ? ? csHead.FillPattern = FillPatternType.SOLID_FOREGROUND;

? ? ? ? csHead.BorderBottom = BorderStyle.THIN;

? ? ? ? csHead.BorderLeft = BorderStyle.THIN;

? ? ? ? csHead.BorderRight = BorderStyle.THIN;

? ? ? ? csHead.BorderTop = BorderStyle.THIN;

? ? ? ? //琛ㄥご

? ? ? ? HSSFRow rowHead = (HSSFRow)sheet1.CreateRow(0);

? ? ? ? for (int i = 0; i < jaTH.Count; i++)

? ? ? ? {

? ? ? ? ? ? bool display = (jaTH[i]["Display"].ToString() != "N");

? ? ? ? ? ? if (!display) continue;

? ? ? ? ? ? string fieldName = jaTH[i]["FieldName"].ToString();

? ? ? ? ? ? int width = (int)jaTH[i]["Width"];

? ? ? ? ? ? sheet1.SetColumnWidth(i, (fieldName.Length + 1) * 2 * 256);

? ? ? ? ? ? ICell cell = rowHead.CreateCell(i, CellType.STRING);

? ? ? ? ? ? cell.SetCellValue(fieldName);

? ? ? ? ? ? cell.CellStyle = csHead;

? ? ? ? }

? ? ? ? //?版??

? ? ? ? ICellStyle[] cellStyle = new ICellStyle[jaTH.Count];

? ? ? ? IFont[] font = new IFont[jaTH.Count];

? ? ? ? for (int r = 0; r < jaData.Count; r++)

? ? ? ? {

? ? ? ? ? ? JObject joData = (JObject)jaData[r];

? ? ? ? ? ? HSSFRow row = (HSSFRow)sheet1.CreateRow(r + 1);

? ? ? ? ? ? for (int i = 0; i < jaTH.Count; i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? bool display = (jaTH[i]["Display"].ToString() != "N");

? ? ? ? ? ? ? ? if (!display) continue;

? ? ? ? ? ? ? ? string fcStr = jaTH[i]["ForeColor"].ToString();

? ? ? ? ? ? ? ? string bcStr = jaTH[i]["BackColor"].ToString();

? ? ? ? ? ? ? ? bool needCreateFont = (font[i] == null);

? ? ? ? ? ? ? ? if (needCreateFont)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? font[i] = hssfworkbook.CreateFont();

? ? ? ? ? ? ? ? ? ? if (fcStr != "none")

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? font[i].Color = (short)htColor[fcStr];

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? bool needCreateCellStyle = (cellStyle[i] == null);

? ? ? ? ? ? ? ? if (needCreateCellStyle)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? cellStyle[i] = hssfworkbook.CreateCellStyle();

? ? ? ? ? ? ? ? ? ? cellStyle[i].WrapText = true;

? ? ? ? ? ? ? ? ? ? cellStyle[i].VerticalAlignment = VerticalAlignment.CENTER;

? ? ? ? ? ? ? ? ? ? if (bcStr != "none")

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].FillForegroundColor = (short)htColor[bcStr];

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].FillPattern = FillPatternType.SOLID_FOREGROUND;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? cellStyle[i].BorderBottom = BorderStyle.THIN;

? ? ? ? ? ? ? ? ? ? cellStyle[i].BorderLeft = BorderStyle.THIN;

? ? ? ? ? ? ? ? ? ? cellStyle[i].BorderRight = BorderStyle.THIN;

? ? ? ? ? ? ? ? ? ? cellStyle[i].BorderTop = BorderStyle.THIN;

? ? ? ? ? ? ? ? ? ? cellStyle[i].SetFont(font[i]);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? string fieldCode = jaTH[i]["FieldCode"].ToString();

? ? ? ? ? ? ? ? string fieldDataType = jaTH[i]["FieldDataType"].ToString();

? ? ? ? ? ? ? ? ICell cell;

? ? ? ? ? ? ? ? if (fieldDataType.StartsWith("numeric("))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? string[] strAry = fieldDataType.TrimStart("numeric(".ToCharArray()).TrimEnd(')').Trim().Split(',');

? ? ? ? ? ? ? ? ? ? int precision = int.Parse(strAry[1]);

? ? ? ? ? ? ? ? ? ? cell = row.CreateCell(i);

? ? ? ? ? ? ? ? ? ? if (joData[fieldCode] != null) cell.SetCellValue(Convert.ToDouble(joData[fieldCode]));

? ? ? ? ? ? ? ? ? ? if (needCreateCellStyle)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].DataFormat = HSSFDataFormat.GetBuiltinFormat("0." + new string('0', precision));

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].Alignment = HorizontalAlignment.RIGHT;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? cell.CellStyle = cellStyle[i];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else if (fieldDataType == "float" || fieldDataType == "double" || fieldDataType == "int" || fieldDataType == "decimal")

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? cell = row.CreateCell(i, CellType.NUMERIC);

? ? ? ? ? ? ? ? ? ? if (joData[fieldCode] != null && joData[fieldCode].ToString() != string.Empty) cell.SetCellValue(Convert.ToDouble(joData[fieldCode]));

? ? ? ? ? ? ? ? ? ? if (needCreateCellStyle)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].Alignment = HorizontalAlignment.RIGHT;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? cell.CellStyle = cellStyle[i];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else if (fieldDataType == "datetime")

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? cell = row.CreateCell(i);

? ? ? ? ? ? ? ? ? ? if (joData[fieldCode] != null)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? if (joData[fieldCode].ToString() == string.Empty)

? ? ? ? ? ? ? ? ? ? ? ? ? ? cell.SetCellValue(string.Empty);

? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? cell.SetCellValue(Convert.ToDateTime(joData[fieldCode]));

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? IDataFormat format = hssfworkbook.CreateDataFormat();

? ? ? ? ? ? ? ? ? ? if (needCreateCellStyle)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].DataFormat = format.GetFormat("yyyy-MM-dd HH:mm:ss");

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].Alignment = HorizontalAlignment.CENTER;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? cell.CellStyle = cellStyle[i];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else if (fieldDataType == "date")

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? cell = row.CreateCell(i);

? ? ? ? ? ? ? ? ? ? if (joData[fieldCode] != null)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? if (joData[fieldCode].ToString() == string.Empty)

? ? ? ? ? ? ? ? ? ? ? ? ? ? cell.SetCellValue(string.Empty);

? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ? cell.SetCellValue(Convert.ToDateTime(joData[fieldCode]));

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? IDataFormat format = hssfworkbook.CreateDataFormat();

? ? ? ? ? ? ? ? ? ? if (needCreateCellStyle)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].DataFormat = format.GetFormat("yyyy-MM-dd");

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].Alignment = HorizontalAlignment.CENTER;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? cell.CellStyle = cellStyle[i];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? cell = row.CreateCell(i, CellType.STRING);

? ? ? ? ? ? ? ? ? ? if (joData[fieldCode] != null) cell.SetCellValue(joData[fieldCode].ToString());

? ? ? ? ? ? ? ? ? ? if (needCreateCellStyle)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? cellStyle[i].Alignment = HorizontalAlignment.LEFT;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? cell.CellStyle = cellStyle[i];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? hssfworkbook.Write(ms);

? ? }

? ? /// <summary>

? ? /// 寰???xcel璋??叉?塊??茬儲寮?

? ? /// </summary>

? ? /// <param name="workbook"></param>

? ? /// <param name="SystemColour"></param>

? ? /// <returns></returns>

? ? public static short GetXLColour(HSSFWorkbook workbook, System.Drawing.Color SystemColour)

? ? {

? ? ? ? short s = 0;

? ? ? ? HSSFPalette XlPalette = workbook.GetCustomPalette();

? ? ? ? HSSFColor XlColour = XlPalette.FindColor(SystemColour.R, SystemColour.G, SystemColour.B);

? ? ? ? if (XlColour == null)

? ? ? ? {

? ? ? ? ? ? if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 255)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (false && NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 64)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? //NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE = 64; ?

? ? ? ? ? ? ? ? ? ? //NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE += 1; ?

? ? ? ? ? ? ? ? ? ? XlColour = XlPalette.AddColor(SystemColour.R, SystemColour.G, SystemColour.B);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? XlColour = XlPalette.FindSimilarColor(SystemColour.R, SystemColour.G, SystemColour.B);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? s = XlColour.GetIndex();

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? else

? ? ? ? ? ? s = XlColour.GetIndex();

? ? ? ? return s;

? ? }

?

? ? ? ??

}

?