C#匯入匯出與處理Excel檔案
前一段時間接了一個小專案,使用C#寫一個Winform客戶端。主要功能就是根據客戶提供的檔案標準,按照一定的規則和演算法,轉換DBF檔案和Excel檔案(字尾名xlsx為主)。這個客戶端的功能並不複雜,但是細節很多,前前後後從框架到交付大約用了三週的時間。我先闡述使用C#語言處理Excel檔案的一些實踐結論。
由於我處理的是字尾名為xlsx檔案,再次就主講此類檔案了。在Excel檔案的輸入中,使用的就是度娘一找一大片的OleDB。
OleDB是微軟的戰略性的通向不同的資料來源的低階應用程式介面。支援很多種資料庫,此客戶端中DBF檔案的輸入輸出也是使用了此資料庫API。使用OleDB記得新增上名稱空間:
using System.Data.OleDb;
xlsx檔案的輸入:
private void inputXlsx()
{
string strConn2;
string filePath = inPath;
FileInfo fileInfo = new FileInfo(filePath);
string directory = fileInfo.DirectoryName;
strConn2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;';" ;
string strConnection = string.Format(strConn2, inPath);
OleDbConnection conn = new OleDbConnection(strConnection);
try
{
conn.Open();
String tableName = null;
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
tableName = dt.Rows[0 ][2].ToString().Trim();
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + tableName + "]", strConnection);
oada.Fill(dtOld);
conn.Close();
}
catch (Exception ex)
{
conn.Close();
}
}
xlsx檔案的中間處理過程因需求而異,在此不再贅述處理方式。在輸入過程中,將檔案中的資料轉化成了Datatable資料型別的格式,它是一個臨時儲存資料的網格虛擬表,處理非常方便。
xlsx檔案的輸出:xlsx檔案的輸出過程並不是很順利,先後使用了三種方式。
第一種方式自然就是OleDB了,有始有終嘛。但是真正使用的過程中發現此方式不僅要求程式執行本機必須安裝Excel,而且對Excel版本要求非常高,如果刪登錄檔很容易弄巧成拙,我改登錄檔就直接玩壞了Excel。事實上我們並不能保證客戶的機器上一定安裝了對應版本的Excel,所以如果使用OleDB輸出檔案,此客戶端的相容性將非常的低劣。
經過一番溝通和掙扎決定還是換一種方式,決定改用第三方元件。由於JAVA方使用的是POI,所以這邊直接使用POI專案的.NET版本,NPOI。網上教程很多,很好實現,但是經過測試之後,此種方式對大檔案的輸入輸出支援的不是很好,處理DEMO檔案沒有問題,但是換成了真正客戶提供的十萬行級甚至百萬行級的檔案,客戶端直接在輸出的過程中崩掉。
查詢資料後,網友們對於大檔案都建議使用EPPlus。教程也是一抓一大把,我沒有繼續加大檔案大小測試,不過客戶給我們提供的十來個檔案全部測試通過,基本上都是百萬級以下的。
上程式碼吧:
private void outputXlsx()
{
FileInfo newFile = new FileInfo(dtNew.TableName + ".xlsx");
if (newFile.Exists)
{
newFile.Delete();
newFile = new FileInfo(dtNew.TableName + ".xlsx");
}
using (ExcelPackage package = new ExcelPackage(newFile))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(dtNew.TableName);//建立worksheet
for (int m = 0; m < dtNew.Columns.Count; m++)
{
worksheet.Cells[1, m + 1].Value = dtNew.Columns[m];
}
int i = 1;
foreach (DataRow dr in dtNew.Rows)
{
for (int j = 0; j < dtNew.Columns.Count; j++)
{
worksheet.Cells[i + 1, j + 1].Value = dr[j];
}
i++;
}
package.Save();//儲存excel
}
}
相關推薦
C#匯入匯出與處理Excel檔案
前一段時間接了一個小專案,使用C#寫一個Winform客戶端。主要功能就是根據客戶提供的檔案標準,按照一定的規則和演算法,轉換DBF檔案和Excel檔案(字尾名xlsx為主)。這個客戶端的功能並不複雜,但是細節很多,前前後後從框架到交付大約用了三週的時間。我先闡
java excel大資料量匯入匯出與優化
package com.hundsun.ta.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java
php匯出資料為excel檔案
<?php require_once "../excel/PHPExcel.php"; require_once "../excel/PHPExcel/Writer/Excel2007.php"; require_once "../config/database.php"; requir
Oracle 快速將資料匯出到CSV(Excel)檔案的方法及效能比較
註釋: 工作中有需要將線上資料匯出到excel給客戶分析/檢視的情況,如下是方法介紹情況: 方法 1分鐘匯出的資料量 適用於 utl_file讀寫檔案包 300萬
VS2008中自定義C++工程模板與修改新建檔案預設編碼的辦法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
使用Python處理Excel檔案的一些程式碼示例
筆記:使用Python處理Excel檔案的一些程式碼示例,以下程式碼來自於《Python資料分析基礎》一書,有刪改 #!/usr/bin/env python3 # 匯入讀取Excel檔案的庫,xlrd,其中的 open_workbook 為讀取工作簿 from xlrd import open_wo
Python處理excel檔案
Python處理excel檔案 這裡只介紹幾種常用的庫。對於2003以前的excel版本,即.xls檔案,只能用xlrd和xlwt庫來處理;對於2003及以後的excel檔案,即.xlsx檔案,需要使用openpyxl庫來處理,這裡著重介紹這三個第三方庫。 注:Workboo
在 Node.js 中利用 js-xlsx 處理 Excel 檔案
參考連結:http://scarletsky.github.io/2016/01/30/nodejs-process-excel/ var _headers = [''], _headers_len = _headers.length; headers = _headers.map((v,
C++ 異常捕捉與處理(try...catch...)
首先舉一個異常處理的例子: string str = "0123456789"; char ch1 = str[100]; //陣列越界,但是不提醒,程式執行立即崩潰 cout << ch1 << endl; &n
用sql server匯入匯出功能 把excel匯入到sql的表中,提示匯入成功,但是資料庫表中並沒有資料?
這是典型的操作錯誤問題 在匯入資料的最後一步之前“選擇源表和檢視”步驟中會出現兩個表,這裡假設你是從“ab”表中匯出的資料,那麼這裡會出現“ab”和“ab$”兩個選項,如果選擇上面的選項,則匯入資料肯定為空,應該選擇下面的那個選項,然後將“目的”中表名最後的“$”去掉,然後
詳解python中xlrd包的安裝與處理Excel表格
python處理Excel常用到的模組是xlrd。使用xlrd可以非常方便的處理Excel文件,下面這篇文章將給大家詳細介紹python中包xlrd的安裝與利用xlrd處理Excel表格的方法,有需要的朋友們可以參考學習,下面來一起看看吧。 一、安裝xlrd
mysql命令列的匯入匯出sql,txt,excel(都在linux或windows命令列操作)
Mysql匯入匯出sql,txt,excel 首先我們通過命令列進入到mysql安裝目錄的bin目錄下,比如我輸入的命令列為: d: cd D:/wamp/bin/mysql/mysql5.6.17/bin 一、匯入匯出sql( linux或windows命令列
C# 用NPOI儲存為Excel檔案
首先下載NPOI元件,版本:NPOI 2.0 下載後新增引用(這裡有.net2.0版和4.0版的,按需引用) 使用方法如下: /// <summary> /// 儲存成excel(NPOI方式) ///
JAVA處理Excel檔案---生成簡單的Excel檔案
在現實的辦公中,我們常常會有這樣一個要求:要求把報表直接用excel開啟。在實習中有這樣一個需求。根據所選擇的資源查詢使用者所提供附件的全部資訊並生成excel供下載。但是在查詢的時候我們需要來檢
Spring boot實現匯出資料生成excel檔案返回
一、基於框架 1.IDE IntelliJ IDEA 2.軟體環境 Spring boot mysql mybatis org.apache.poi 二、環境整合 1.建立spring boot專案工程 略
list集合轉csv檔案以及servlet匯出csv和excel檔案
public class CsvToListObjectTest { /** * 寫入csv檔案 * @param list * @param fileName * @return */ public sta
C#.net匯出標準的Excel(npoi)
不管用哪一種語言開發應用程式,匯出功能是最常見的,一般匯出檔案格式最常見的有PDF 、Excel、CSV、Word、TXT等,今天我們在此介紹一下Excel的匯出方法。 微軟提供了匯出Excel的多種辦法,但是今天我們在這裡只介紹一種第三方的匯出方法,因為它
獲取jqGrid中的所有資料匯出並生成Excel檔案流供使用者下載(post請求實現檔案下載)
最近有一個需求是: 將jqGrid表格中的資料生成報表Excel檔案返回給使用者。 我的想法是獲取jqGrid中的資料然後生成json資料,傳給後端,生成檔案流,響應到前端,儲存為excel檔案。 ajax為什麼不能夠實現下載檔案 ajax的返回值型別是json,text
Python批量處理Excel檔案到同一檔案的不同sheet上(未完...)
存在每次活動整理的Excel資料檔案,需放在一個Excel上進行儲存#-*-coding:utf-8-*- import os import pandas as pd path='' files=os.
python高手之路python處理excel檔案
用python來自動生成excel資料檔案。python處理excel檔案主要是第三方模組庫xlrd、xlwt、xluntils和pyExcelerator,除此之外,python處理excel還可以用win32com和openpyxl模組。 方法一