日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案...

發布時間:2025/10/17 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.OpenXmlSDK是個很好的類庫,可惜只能通過C#調用,C#的童鞋又福氣了。

2.服務端程序由于沒法安裝office,所以這個對asp.net網站來說是最理想的庫了。需要.net 4.0版本以上.

3.以流形式,sax模型讀取大文件。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using DocumentFormat.OpenXml;

using DocumentFormat.OpenXml.Packaging;

using DocumentFormat.OpenXml.Spreadsheet;

namespace ConsoleApplication1

{

class ProductObject

{

public String xinghao;//型號

public String changjia;//廠家

public String pihao;//批號

public String fengzhuang;//封裝

public String shuliang;//數量

public void init()

{

//初始化成員變量

}

}

class Program

{

static void Main(string[] args)

{

String fileName = @"E:\software\TestData\xlsx\test.xlsx";

Program pro = new Program();

pro.ReadAllCellValues(fileName);

}

void CallSqlInsert(ProductObject po)

{

//call bl interface method to insert data to database.

//注意處理空值的情況

Console.Out.Write("{0}:{1}:{2}:{3}:{4} ", po.xinghao, po.changjia, po.pihao, po.fengzhuang, po.shuliang);

Console.Out.WriteLine();

}

String GetCellValue(WorkbookPart workbookPart,Cell c)

{

string cellValue;

if (c.DataType != null && c.DataType == CellValues.SharedString)

{

SharedStringItem ssi = workbookPart.SharedStringTablePart.SharedStringTable.Elements().ElementAt(int.Parse(c.CellValue.InnerText));

cellValue = ssi.Text.Text;

}

else

{

cellValue = c.CellValue.InnerText;

}

return cellValue;

}

Boolean StoreProductObject(OpenXmlReader reader, WorkbookPart workbookPart, ProductObject po)

{

reader.ReadFirstChild();

if (reader.ElementType != typeof(Cell))

{

return false;

}

Cell c = (Cell)reader.LoadCurrentElement();

po.xinghao = GetCellValue(workbookPart,c);

reader.ReadNextSibling();

c = (Cell)reader.LoadCurrentElement();

po.changjia = GetCellValue(workbookPart,c);

reader.ReadNextSibling();

c = (Cell)reader.LoadCurrentElement();

po.pihao = GetCellValue(workbookPart,c);

reader.ReadNextSibling();

c = (Cell)reader.LoadCurrentElement();

po.fengzhuang = GetCellValue(workbookPart,c);

reader.ReadNextSibling();

c = (Cell)reader.LoadCurrentElement();

po.shuliang = GetCellValue(workbookPart,c);

return true;

}

//這種SAX的讀取方式很高效,至于是讀一行提交一行好還是讀100行再提交100行好自己決定.

//這種SAX的方式對讀取超大xlsx文件不存在內存占用過大和慢的問題.

void ReadAllCellValues(string fileName)

{

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false))

{

WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;

ProductObject po = new ProductObject();

foreach (WorksheetPart worksheetPart in workbookPart.WorksheetParts)

{

OpenXmlReader reader = OpenXmlReader.Create(worksheetPart);

while (reader.Read())

{

if (reader.ElementType == typeof(Worksheet))

{

if (reader.ReadFirstChild())

{

SheetProperties properties = (SheetProperties)reader.LoadCurrentElement();

//只處理名字是Sheet1的,其他不處理

if (properties.CodeName != "Sheet1")

{

break;

}

}

}

if (reader.ElementType == typeof(Row))

{

//先調用一個成員函數初始化init,自己寫.

po.init();

if (StoreProductObject(reader, workbookPart, po))

{

CallSqlInsert(po);

}

}

}

}

}

}

}

}

C#讀取Excel的其中一種方式OleDb讀取(100萬條)--快速大量插入SQL中

主要運用表類型 Create table BulkTestTable( Id nvarchar(), UserName nvarchar(), Pwd nvarchar() ) Go CREATE T ...

Java 線程池 +生產者消費者+MySQL讀取300 萬條數據

1.1需求 數據庫300 萬條用戶數據 ,遍歷獲取所有用戶, 各種組合關聯, 獲取到一個新的json ,存到redis 上. 1.2 難點 數據庫比較多, 不可能單線程查詢所有的數據到內存. 1.3解 ...

【asp.net】asp.net實現上傳Excel文件并讀取數據

#前臺代碼:使用服務端控件實現上傳

Vue項目中導入excel文件讀取成js數組

1. 安裝組件 cnpm install xlsx --save 2. 代碼

總結

以上是生活随笔為你收集整理的python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。