npoiの使い方
9776 ワード
多くの友人がプロジェクトを行う過程で多かれ少なかれexcelのインポート、エクスポート機能を使用していますが、NPOIを使用してどのようにexcelをインポート、エクスポートするかを紹介します.
コードでnpoiの使い方を説明して、必要な友達に少しでも助けてほしいし、みんなと一緒にnpoiの使い方を勉強してもいいです.くだらないことは言わないで、直接コードをつけてください.
NPOIを使用したExcelコードのエクスポート
ExcelのデータをDBにインポートする方法は次のとおりです.
説明:サードパーティ製なのでdllファイルを導入する必要があります
どうぞhttp://npoi.codeplex.com/releases/view/115353npoiをダウンロードして、ソースコードがあって、コンパイルしたdllファイルがあります.
Excelにエクスポートする機能のみの場合、ダウンロード後は「NPOI.dll」を導入するだけです
EXcelのデータをデータベースにインポートし、office 2003とoffice 2007を同時に互換化する必要がある場合は、「NPOI.dll」、「NPOI.OOXML.dll」、「NPOI.OpenXml 4 net.dll」を導入する必要があります
Office 2003と互換性が必要な場合は「NPOI.dll」を導入すればよい
office 2010の下で私は試したことがなくて、興味のある友达は試してみることができて、私が使っているコード環境は.Netframework 4.0低すぎるバージョンは試したことがなくて、以上のコードが正常に実行できるかどうか分かりません
ようこそグループへ:254082423
一緒にaspを勉強します.net mvc
コードでnpoiの使い方を説明して、必要な友達に少しでも助けてほしいし、みんなと一緒にnpoiの使い方を勉強してもいいです.くだらないことは言わないで、直接コードをつけてください.
NPOIを使用したExcelコードのエクスポート
private static MemoryStream RenderToExcel(DataTable dt)
{
if (Equals(dt, null))
{
return null;
}
MemoryStream ms = new MemoryStream();
using (dt)
{
IWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet();
IRow headerRow = sheet.CreateRow(0);
foreach (DataColumn column in dt.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);
}
int rowIndex = 1;
foreach (DataRow row in dt.Rows)
{
IRow dataRow = sheet.CreateRow(rowIndex);
foreach (DataColumn column in dt.Columns)
{
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column.Caption].ToString());
}
rowIndex++;
}
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
}
return ms;
}
private static void SaveToFile(MemoryStream ms, string dirPath, string fileName)
{
if (string.IsNullOrEmpty(dirPath) || string.IsNullOrEmpty(fileName))
{
return;
}
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
using (FileStream fs = new FileStream(string.Format("{0}{1}", dirPath, fileName), FileMode.Create))
{
byte[] data = ms.ToArray();
fs.Write(data, 0, data.Length);
fs.Flush();
data = null;
}
}
public static void SaveExcel(DataTable dt, string dirPath, string fileName)
{
SaveToFile(RenderToExcel(dt), dirPath, fileName);
}
ExcelのデータをDBにインポートする方法は次のとおりです.
public static DataTable ReadExcelToDataTable(string fileName)
{
using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
var workbook = default(IWorkbook);
if (fileName.IndexOf(".xlsx", StringComparison.OrdinalIgnoreCase) > 0)
workbook = new XSSFWorkbook(stream);
else
workbook = new HSSFWorkbook(stream);
var sheet = workbook.GetSheetAt(workbook.ActiveSheetIndex);
if (Equals(sheet, null))
{
return null;
}
var dt = new DataTable();
CreateDataColumn(sheet, dt);
CreateDataTable(sheet, dt);
return dt;
}
}
private static void CreateDataTable(ISheet sheet, DataTable dt)
{
for (var i = 1; i < sheet.LastRowNum; i++)
{
var sheetRow = sheet.GetRow(i);
var dataRow = dt.NewRow();
for (var j = 0; j < sheetRow.LastCellNum; j++)
{
dataRow[j] = sheetRow.GetCell(j).ToString();
}
dt.Rows.Add(dataRow);
}
}
private static void CreateDataColumn(ISheet sheet, DataTable dt)
{
var firstRow = sheet.GetRow(0);
for (var i = 0; i < firstRow.LastCellNum; i++)
{
var column = new DataColumn(firstRow.GetCell(i).StringCellValue);
dt.Columns.Add(column);
}
}
説明:サードパーティ製なのでdllファイルを導入する必要があります
どうぞhttp://npoi.codeplex.com/releases/view/115353npoiをダウンロードして、ソースコードがあって、コンパイルしたdllファイルがあります.
Excelにエクスポートする機能のみの場合、ダウンロード後は「NPOI.dll」を導入するだけです
EXcelのデータをデータベースにインポートし、office 2003とoffice 2007を同時に互換化する必要がある場合は、「NPOI.dll」、「NPOI.OOXML.dll」、「NPOI.OpenXml 4 net.dll」を導入する必要があります
Office 2003と互換性が必要な場合は「NPOI.dll」を導入すればよい
office 2010の下で私は試したことがなくて、興味のある友达は試してみることができて、私が使っているコード環境は.Netframework 4.0低すぎるバージョンは試したことがなくて、以上のコードが正常に実行できるかどうか分かりません
ようこそグループへ:254082423
一緒にaspを勉強します.net mvc