中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

Asp.net:常見數據導入Excel
來源:易賢網 閱讀:936 次 日期:2014-10-13 11:50:41
溫馨提示:易賢網小編為您整理了“Asp.net:常見數據導入Excel”,方便廣大網友查閱!

引言

項目中常用到將數據導入Excel,將Excel中的數據導入數據庫的功能,曾經也查找過相關的內容,將曾經用過的方案總結一下。

方案一

NPOI

NPOI 是 POI 項目的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項目。

使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文檔進行讀寫操作。

優勢

(一)傳統操作Excel遇到的問題:

1、如果是.NET,需要在服務器端裝Office,且及時更新它,以防漏洞,還需要設定權限允許.NET訪問COM+,如果在導出過程中出問題可能導致服務器宕機。

2、Excel會把只包含數字的列進行類型轉換,本來是文本型的,Excel會將其轉成數值型的,比如編號000123會變成123。

3、導出時,如果字段內容以“-”或“=”開頭,Excel會把它當成公式進行,會報錯。

4、Excel會根據Excel文件前8行分析數據類型,如果正好你前8行某一列只是數字,那它會認為該列為數值型,自動將該列轉變成類似1.42702E+17格式,日期列變成包含日期和數字的。

(二)使用NPOI的優勢

1、您可以完全免費使用該框架

2、包含了大部分EXCEL的特性(單元格樣式、數據格式、公式等等)

3、專業的技術支持服務(24*7全天候) (非免費)

4、支持處理的文件格式包括xls, xlsx, docx.

5、采用面向接口的設計架構( 可以查看 NPOI.SS 的命名空間)

6、同時支持文件的導入和導出

7、基于.net 2.0 也支持xlsx 和 docx格式(當然也支持.net 4.0)

8、來自全世界大量成功且真實的測試Cases

9、大量的實例代碼

11、你不需要在服務器上安裝微軟的Office,可以避免版權問題。

12、使用起來比Office PIA的API更加方便,更人性化。

13、你不用去花大力氣維護NPOI,NPOI Team會不斷更新、改善NPOI,絕對省成本。

NPOI之所以強大,并不是因為它支持導出Excel,而是因為它支持導入Excel,并能“理解”OLE2文檔結構,這也是其他一些Excel讀寫庫比較弱的方面。通常,讀入并理解結構遠比導出來得復雜,因為導入你必須假設一切情況都是可能的,而生成你只要保證滿足你自己需求就可以了,如果把導入需求和生成需求比做兩個集合,那么生成需求通常都是導入需求的子集,這一規律不僅體現在Excel讀寫庫中,也體現在pdf讀寫庫中,目前市面上大部分的pdf庫僅支持生成,不支持導入。

構成

NPOI 1.2.x主要由POIFS、DDF、HPSF、HSSF、SS、Util六部分組成。

NPOI.POIFS

OLE2/ActiveX文檔屬性讀寫庫

NPOI.DDF

Microsoft Office Drawing讀寫庫

NPOI.HPSF

OLE2/ActiveX文檔讀寫庫

NPOI.HSSF

Microsoft Excel BIFF(Excel 97-2003)格式讀寫庫

NPOI.SS

Excel公用接口及Excel公式計算引擎

NPOI.Util

基礎類庫,提供了很多實用功能,可用于其他讀寫文件格式項目的開發

NPOI組成部分

NPOI 1.x的最新版為NPOI 1.2.5,其中包括了以下功能:

1、讀寫OLE2文檔

2、讀寫DocummentSummaryInformation和SummaryInformation

3、基于LittleEndian的字節讀寫

4、讀寫Excel BIFF格式

5、識別并讀寫Excel BIFF中的常見Record,如RowRecord, StyleRecord, ExtendedFormatRecord

6、支持設置單元格的高、寬、樣式等

7、支持調用部分Excel內建函數,比如說sum, countif以及計算符號

8、支持在生成的XLS內嵌入打印設置,比如說橫向/縱向打印、縮放、使用的紙張等。

NPOI 2.0主要由SS, HPSF, DDF, HSSF, XWPF, XSSF, OpenXml4Net, OpenXmlFormats組成,具體列表如下:

Assembly名稱 模塊/命名空間 說明

NPOI.DLL

NPOI.POIFS

OLE2/ActiveX文檔屬性讀寫庫

NPOI.DLL

NPOI.DDF

微軟Office Drawing讀寫庫

NPOI.DLL

NPOI.HPSF

OLE2/ActiveX文檔讀寫庫

NPOI.DLL

NPOI.HSSF

微軟Excel BIFF(Excel 97-2003, doc)格式讀寫庫

NPOI.DLL

NPOI.SS

Excel公用接口及Excel公式計算引擎

NPOI.DLL

NPOI.Util

基礎類庫,提供了很多實用功能,可用于其他讀寫文件格式項目的開發

NPOI.OOXML.DLL NPOI.XSSF Excel 2007(xlsx)格式讀寫庫

NPOI.OOXML.DLL NPOI.XWPF Word 2007(docx)格式讀寫庫

NPOI.OpenXml4Net.DLL NPOI.OpenXml4Net OpenXml底層zip包讀寫庫

NPOI.OpenXmlFormats.DLL NPOI.OpenXmlFormats 微軟Office OpenXml對象關系庫

(以上內容來自百度百科)從上表可知NPOI組件已支持excel2007,記得之前用的時候只支持excel2003。很久沒研究過這玩意兒了。

案例

官網地址:http://npoi.codeplex.com/,可以從官網下載NPOI2.X版本的。

首先引入

ICSharpCode.SharpZipLib.dll

NPOI.dll

NPOI.OOXML.dll

NPOI.OpenXml4Net.dll

NPOI.OpenXmlFormats.dll

然后引入命名空間:

using NPOI.XSSF.UserModel;

using NPOI.SS.UserModel;

using NPOI.HSSF.UserModel;

輔助類

using NPOI.XSSF.UserModel;

using NPOI.SS.UserModel;

using NPOI.HSSF.UserModel;

using System;

using System.Collections.Generic;

using System.Data;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using NPOI.SS.Formula.Eval;

namespace Wolfy.Common

{

///

 

/// 使用NPOI組件

/// 需引入ICSharpCode.SharpZipLib.dll/NPOI.dll/NPOI.OOXML.dll/NPOI.OpenXml4Net.dll/NPOI.OpenXmlFormats.dll

/// office2007

///

 

public class NPOIExcelHelper

{

///

 

/// 將Excel文件中的數據讀出到DataTable中

///

 

///

///

public static DataTable Excel2DataTable(string file, string sheetName, string tableName)

{

DataTable dt = new DataTable();

IWorkbook workbook = null;

using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))

{

//office2003 HSSFWorkbook

workbook = new XSSFWorkbook(fs);

}

ISheet sheet = workbook.GetSheet(sheetName);

dt = Export2DataTable(sheet, 0, true);

return dt;

}

///

 

/// 將指定sheet中的數據導入到datatable中

///

 

/// 指定需要導出的sheet

/// 列頭所在的行號,-1沒有列頭

///

///

private static DataTable Export2DataTable(ISheet sheet, int HeaderRowIndex, bool needHeader)

{

DataTable dt = new DataTable();

XSSFRow headerRow = null;

int cellCount;

try

{

if (HeaderRowIndex < 0 || !needHeader)

{

headerRow = sheet.GetRow(0) as XSSFRow;

cellCount = headerRow.LastCellNum;

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

{

DataColumn column = new DataColumn(Convert.ToString(i));

dt.Columns.Add(column);

}

}

else

{

headerRow = sheet.GetRow(HeaderRowIndex) as XSSFRow;

cellCount = headerRow.LastCellNum;

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

{

ICell cell = headerRow.GetCell(i);

if (cell == null)

{

break;//到最后 跳出循環

}

else

{

DataColumn column = new DataColumn(headerRow.GetCell(i).ToString());

dt.Columns.Add(column);

}

}

}

int rowCount = sheet.LastRowNum;

for (int i = HeaderRowIndex + 1; i <= sheet.LastRowNum; i++)

{

XSSFRow row = null;

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

{

row = sheet.CreateRow(i) as XSSFRow;

}

else

{

row = sheet.GetRow(i) as XSSFRow;

}

DataRow dtRow = dt.NewRow();

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

{

if (row.GetCell(j) != null)

{

switch (row.GetCell(j).CellType)

{

case CellType.Boolean:

dtRow[j] = Convert.ToString(row.GetCell(j).BooleanCellValue);

break;

case CellType.Error:

dtRow[j] = ErrorEval.GetText(row.GetCell(j).ErrorCellValue);

break;

case CellType.Formula:

switch (row.GetCell(j).CachedFormulaResultType)

{

case CellType.Boolean:

dtRow[j] = Convert.ToString(row.GetCell(j).BooleanCellValue);

break;

case CellType.Error:

dtRow[j] = ErrorEval.GetText(row.GetCell(j).ErrorCellValue);

break;

case CellType.Numeric:

dtRow[j] = Convert.ToString(row.GetCell(j).NumericCellValue);

break;

case CellType.String:

string strFORMULA = row.GetCell(j).StringCellValue;

if (strFORMULA != null && strFORMULA.Length > 0)

{

dtRow[j] = strFORMULA.ToString();

}

else

{

dtRow[j] = null;

}

break;

default:

dtRow[j] = "";

break;

}

break;

case CellType.Numeric:

if (DateUtil.IsCellDateFormatted(row.GetCell(j)))

{

dtRow[j] = DateTime.FromOADate(row.GetCell(j).NumericCellValue);

}

else

{

dtRow[j] = Convert.ToDouble(row.GetCell(j).NumericCellValue);

}

break;

case CellType.String:

string str = row.GetCell(j).StringCellValue;

if (!string.IsNullOrEmpty(str))

{

dtRow[j] = Convert.ToString(str);

}

else

{

dtRow[j] = null;

}

break;

default:

dtRow[j] = "";

break;

}

}

}

dt.Rows.Add(dtRow);

}

}

catch (Exception)

{

return null;

}

return dt;

}

///

 

/// 將DataTable中的數據導入Excel文件中

///

 

///

///

public static void DataTable2Excel(DataTable dt, string file, string sheetName)

{

IWorkbook workbook = new XSSFWorkbook();

ISheet sheet = workbook.CreateSheet(sheetName);

IRow header = sheet.CreateRow(0);

for (int i = 0; i < dt.Columns.Count; i++)

{

ICell cell = header.CreateCell(i);

cell.SetCellValue(dt.Columns[i].ColumnName);

}

//數據

for (int i = 0; i < dt.Rows.Count; i++)

{

IRow row = sheet.CreateRow(i + 1);

for (int j = 0; j < dt.Columns.Count; j++)

{

ICell cell = row.CreateCell(j);

cell.SetCellValue(dt.Rows[i][j].ToString());

}

}

MemoryStream stream = new MemoryStream();

workbook.Write(stream);

byte[] buffer = stream.ToArray();

using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write))

{

fs.Write(buffer, 0, buffer.Length);

fs.Flush();

}

}

///

 

/// 獲取單元格類型

///

 

///

///

private static object GetValueType(XSSFCell cell)

{

if (cell == null)

{

return null;

}

switch (cell.CellType)

{

case CellType.Blank:

return null;

case CellType.Boolean:

return cell.BooleanCellValue;

case CellType.Error:

return cell.ErrorCellValue;

case CellType.Numeric:

return cell.NumericCellValue;

case CellType.String:

return cell.StringCellValue;

case CellType.Formula:

default:

return "=" + cell.StringCellValue;

}

}

}

}

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:Asp.net:常見數據導入Excel
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
在线观看日产精品| 欧美日韩一区二区免费在线观看 | 国产欧美日韩一区二区三区在线观看| 国内精品久久久久影院色| 亚洲一区二区免费| 国产精品v欧美精品∨日韩| 欧美伊久线香蕉线新在线| 国产精品无码专区在线观看| 欧美一区=区| 亚洲黄页视频免费观看| 国产精品久久久久久av下载红粉| 欧美大片免费久久精品三p| 亚洲日韩视频| 亚洲成人在线| 国产精品久久久亚洲一区| 久热精品在线| 欧美一区二区三区四区高清| 亚洲人成网站精品片在线观看| 亚洲精品一二区| 国产色产综合产在线视频| 久久久久久久久久看片| 亚洲欧美日韩在线一区| 亚洲欧洲在线一区| 欧美黄污视频| 欧美激情二区三区| 牛夜精品久久久久久久99黑人| 国产精品一区视频| 欧美日本中文| 欧美顶级艳妇交换群宴| 免费精品99久久国产综合精品| 国产精品白丝jk黑袜喷水| 欧美成人免费小视频| 亚洲电影在线播放| 国产欧美精品va在线观看| 欧美一区二区三区视频免费| 亚洲线精品一区二区三区八戒| 久久婷婷国产综合精品青草| 久久国产精品第一页| 久久综合九色综合欧美就去吻 | 久热精品视频在线观看| 日韩亚洲欧美高清| 亚洲级视频在线观看免费1级| 久久久国产午夜精品| 午夜欧美大尺度福利影院在线看| 国产精品日韩久久久| 欧美精品一区二区三区蜜桃| 欧美顶级艳妇交换群宴| 欧美区日韩区| 欧美高清视频www夜色资源网| 国产永久精品大片wwwapp| 红桃视频欧美| 99精品国产热久久91蜜凸| 一本一本久久a久久精品综合麻豆| 欧美一级黄色录像| 亚洲在线免费| 欧美日韩午夜在线| 伊人成人开心激情综合网| 99re6热只有精品免费观看| 亚洲午夜一区二区三区| 久久福利资源站| 欧美高清不卡在线| 韩国三级在线一区| 欧美制服丝袜| 国产精品久久午夜| 亚洲精品之草原avav久久| 久久精品噜噜噜成人av农村| 欧美性视频网站| 亚洲午夜精品久久久久久app| 狠狠色丁香婷婷综合久久片| 亚洲日本欧美日韩高观看| 男同欧美伦乱| 99视频在线观看一区三区| 欧美激情精品久久久| 亚洲欧洲日韩综合二区| 欧美区亚洲区| 亚洲综合色噜噜狠狠| 国产日韩欧美精品在线| 久久国产精品99精品国产| 国内精品久久久久久久97牛牛| 国产精品一二三| 久久成人精品无人区| 在线播放中文一区| 欧美日韩人人澡狠狠躁视频| 亚洲资源av| 在线成人av网站| 国产精品videosex极品| 久久久精品欧美丰满| 亚洲国产精品激情在线观看| 久久久精品国产免费观看同学 | 最新国产成人在线观看| 久久全球大尺度高清视频| 国产一区二区三区四区老人| 久久午夜av| 久久九九精品| 狠狠色噜噜狠狠狠狠色吗综合| 国产欧美日韩伦理| 久久字幕精品一区| 在线一区二区三区四区| 黄色在线成人| 国产一区二区三区无遮挡| 欧美日韩国产123| 欧美黄色aa电影| 免费欧美日韩| 另类专区欧美制服同性| 欧美综合激情网| 午夜精品久久久久久久久久久久久| 欧美成人精品三级在线观看| 在线日韩日本国产亚洲| 国产精品五区| 国产欧美一区二区视频| 欧美成人免费小视频| 欧美精品黄色| 国产精品久久久亚洲一区| 国产精品久久综合| 国产日本精品| 亚洲第一主播视频| 亚洲电影在线免费观看| 亚洲精品久久久久中文字幕欢迎你| 免费在线日韩av| 亚洲一区二区视频在线| 一本色道久久综合狠狠躁篇怎么玩 | 午夜精品久久久久久久| 亚洲免费视频一区二区| 久久福利精品| 欧美日本中文| 精品91在线| 一区二区三区www| 欧美在线一二三四区| 欧美了一区在线观看| 国产字幕视频一区二区| 一本久久精品一区二区| 久久久www成人免费毛片麻豆| 狠狠综合久久av一区二区小说| 欧美在线视频免费播放| 久久午夜激情| 国产精品一区在线播放| 亚洲裸体俱乐部裸体舞表演av| 国产精品久久久久久久一区探花| 亚洲欧美日韩精品| 欧美精品麻豆| 亚洲激情黄色| 久久久久久香蕉网| 欧美日韩国产影院| 亚洲国产乱码最新视频| 久久野战av| 国产日本精品| 久久精品国产久精国产爱| 国产精品福利av| 在线亚洲欧美| 国产精品一区一区| 欧美日韩午夜在线| 欧美日韩国产成人在线观看| 黄色一区二区在线观看| 老司机精品导航| 揄拍成人国产精品视频| 久久久7777| 亚洲第一精品在线| 欧美激情国产精品| 一区二区国产精品| 国产久一道中文一区| 久久久人成影片一区二区三区观看 | 日韩视频永久免费| 欧美freesex交免费视频| 亚洲老司机av| 国产伦精品一区二区三区| 两个人的视频www国产精品| 99热这里只有精品8| 国产日韩精品在线观看| 久久久xxx| 亚洲综合国产精品| 亚洲国产精品成人一区二区| 国产精品第一页第二页第三页| 国内精品亚洲| 国产精品二区影院| 蜜桃伊人久久| 久久riav二区三区| 亚洲在线免费观看| 99热在线精品观看| 在线精品一区| 国产婷婷精品| 国产精品亚洲综合久久| 国产精品福利在线观看| 欧美日韩久久| 欧美日韩18| 欧美日韩精品中文字幕| 久久久亚洲一区| 乱人伦精品视频在线观看| 亚洲黄色小视频| 亚洲毛片在线看| 亚洲网友自拍| 欧美亚洲视频| 美女诱惑黄网站一区| 欧美激情视频一区二区三区在线播放 | 国内成人自拍视频| 欧美精品成人在线| 欧美性猛片xxxx免费看久爱 | 欧美日韩一区在线| 欧美日韩国产综合久久| 国产精品视频福利| 1769国产精品|