npoiの使い方

9776 ワード

多くの友人がプロジェクトを行う過程で多かれ少なかれexcelのインポート、エクスポート機能を使用していますが、NPOIを使用してどのようにexcelをインポート、エクスポートするかを紹介します.
コードで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