. net 에서 NPOI 나 MyXLs 를 사용 하여 DataTable 을 Excel 로 내 보 냅 니 다.

34456 단어 Datatable
본문
Excel         :
 



     .net          DataTable   Excel  ,            。             :
 



    :
 



     asp.net,        Office,  M ,       ,    ,        ASP.net  COM+,                     。
 



  Excel               ,       ,           ,         000,  000123   123,    ,    。              ,           ,         。
 



     ,         "-" "="  ,Excel            ,      ,  :  ,   Sheet1   
 



    :
 



  Excel      Excel   8       ,      8        ,               ,  ,   ,  ,            1.42702E+17  ,              ,   ,         Excel     ,         ,           。
 






      ,               ,           ,       ,         ,            ,                 。
 



              Excel     :
 



        NPOI MyXls,    ,    Excel         ,       :  .net      ,     Excel     ,    Office   Excel,     ASP.net Winform     ,    Excel       ,     ,  ,  ,  “Excel    ”,       ,      Excel  ,      ,           ,NPOI || MyXls ==     Excel。
 



  NPOI    :http://npoi.codeplex.com/
 
  NPOI    :http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html
 



  MyXls    :http://sourceforge.net/projects/myxls/
 



           :
 
MyXls       :
 







 1 /// <summary>
 2 /// MyXls  Demo,      
 3 /// </summary>
 4 /// <param name="dtSource"></param>
 5 /// <param name="strFileName"></param>
 6 /// <remarks>MyXls  Excel        :(1,1)</remarks>
 7 /// <Author>    http://www.yongfa365.com/ 2010-5-8 22:21:41</Author>
 8 public static void ExportEasy(DataTable dtSource,  string strFileName)
 9 {
10     XlsDocument xls = new XlsDocument();
11     Worksheet sheet = xls.Workbook.Worksheets.Add("Sheet1");
12 
13     //    
14     foreach (DataColumn col in dtSource.Columns)
15     {
16         sheet.Cells.Add(1, col.Ordinal + 1, col.ColumnName);
17     }
18 
19     //    
20     for (int i = 0; i < dtSource.Rows.Count; i++)
21     {
22         for (int j = 0; j < dtSource.Columns.Count; j++)
23         {
24             sheet.Cells.Add(i + 2, j + 1, dtSource.Rows[i][j].ToString());
25         }
26     }
27 
28     //  
29     xls.FileName = strFileName;
30     xls.Save();
31 }



 
 
NPOI       :
 







 1 /// <summary>
 2 /// NPOI  Demo,      
 3 /// </summary>
 4 /// <param name="dtSource"></param>
 5 /// <param name="strFileName"></param>
 6 /// <remarks>NPOI  Excel        :(0,0)</remarks>
 7 /// <Author>    http://www.yongfa365.com/ 2010-5-8 22:21:41</Author>
 8 public static void ExportEasy(DataTable dtSource, string strFileName)
 9 {
10     HSSFWorkbook workbook = new HSSFWorkbook();
11     HSSFSheet sheet = workbook.CreateSheet();
12 
13     //    
14     HSSFRow dataRow = sheet.CreateRow(0);
15     foreach (DataColumn column in dtSource.Columns)
16     {
17         dataRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
18     }
19 
20 
21     //    
22     for (int i = 0; i < dtSource.Rows.Count; i++)
23     {
24         dataRow = sheet.CreateRow(i + 1);
25         for (int j = 0; j < dtSource.Columns.Count; j++)
26         {
27             dataRow.CreateCell(j).SetCellValue(dtSource.Rows[i][j].ToString());
28         }
29     }
30 
31 
32     //  
33     using (MemoryStream ms = new MemoryStream())
34     {
35         using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write))
36         {
37             workbook.Write(fs);
38         }
39     }
40     workbook.Dispose();
41 }



 
 
 
 
       (yongfa365)'Blog              ,      ( NPOI):
 



1.  web winform DataTable   Excel。
2.      。
3.        ,                     。
4.        65535       。
5.     。
6.    Excel。
7.    ,          OK 。
8.        MyXls      NPOI 3 , NPOI           ,              ,     NPOI            。
 



MyXls     :
 







 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using org.in2bits.MyXls;
 6 using org.in2bits.MyXls.ByteUtil;
 7 using System.Data;
 8 
 9 class ExcelHelper
10 {
11     public static void Export(DataTable dtSource, string strHeaderText, string strFileName)
12     {
13         XlsDocument xls = new XlsDocument();
14         xls.FileName = DateTime.Now.ToString("yyyyMMddHHmmssffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);
15         xls.SummaryInformation.Author = "yongfa365"; //  xls      
16         xls.SummaryInformation.NameOfCreatingApplication = "liu yongfa"; //  xls        
17         xls.SummaryInformation.LastSavedBy = "LastSavedBy"; //  xls         
18         xls.SummaryInformation.Comments = "Comments"; //  xls      
19         xls.SummaryInformation.Title = "title"; //  xls      
20         xls.SummaryInformation.Subject = "Subject";//        
21         xls.DocumentSummaryInformation.Company = "company";//        
22 
23 
24         Worksheet sheet = xls.Workbook.Worksheets.Add("Sheet1");//       
25         Cells cells = sheet.Cells;
26 
27         foreach (DataColumn col in dtSource.Columns)
28         {
29             Cell cell = cells.Add(1, col.Ordinal + 1, col.ColumnName);
30             cell.Font.FontFamily = FontFamilies.Roman; //  
31             cell.Font.Bold = true;  //       
32 
33         }
34         #region     
35         XF dateStyle = xls.NewXF();
36         dateStyle.Format = "yyyy-mm-dd";
37 
38         for (int i = 0; i < dtSource.Rows.Count; i++)
39         {
40             for (int j = 0; j < dtSource.Columns.Count; j++)
41             {
42 
43                 int rowIndex = i + 2;
44                 int colIndex = j + 1;
45                 string drValue = dtSource.Rows[i][j].ToString();
46 
47                 switch (dtSource.Rows[i][j].GetType().ToString())
48                 {
49                     case "System.String"://     
50                         cells.Add(rowIndex, colIndex, drValue);
51                         break;
52                     case "System.DateTime"://    
53                         DateTime dateV;
54                         DateTime.TryParse(drValue, out dateV);
55                         cells.Add(rowIndex, colIndex, dateV, dateStyle);
56                         break;
57                     case "System.Boolean"://   
58                         bool boolV = false;
59                         bool.TryParse(drValue, out boolV);
60                         cells.Add(rowIndex, colIndex, boolV);
61                         break;
62                     case "System.Int16"://  
63                     case "System.Int32":
64                     case "System.Int64":
65                     case "System.Byte":
66                         int intV = 0;
67                         int.TryParse(drValue, out intV);
68                         cells.Add(rowIndex, colIndex, intV);
69                         break;
70                     case "System.Decimal"://   
71                     case "System.Double":
72                         double doubV = 0;
73                         double.TryParse(drValue, out doubV);
74                         cells.Add(rowIndex, colIndex, doubV);
75                         break;
76                     case "System.DBNull"://    
77                         cells.Add(rowIndex, colIndex, null);
78                         break;
79                     default:
80                         cells.Add(rowIndex, colIndex, null);
81                         break;
82                 }
83             }
84         }
85 
86         #endregion
87 
88         xls.FileName = strFileName;
89         xls.Save();
90     }
91 }
92 



 
 
 
 
NPOI       :
 






  1 using System;
  2 using System.Collections.Generic;
  3 using System.Data;
  4 using System.IO;
  5 using System.Text;
  6 using System.Web;
  7 using NPOI;
  8 using NPOI.HPSF;
  9 using NPOI.HSSF;
 10 using NPOI.HSSF.UserModel;
 11 using NPOI.HSSF.Util;
 12 using NPOI.POIFS;
 13 using NPOI.Util;
 14 
 15 
 16 public class ExcelHelper
 17 {
 18     /// <summary>
 19     /// DataTable   Excel  
 20     /// </summary>
 21     /// <param name="dtSource"> DataTable</param>
 22     /// <param name="strHeaderText">    </param>
 23     /// <param name="strFileName">    </param>
 24     /// <Author>    http://www.yongfa365.com/ 2010-5-8 22:21:41</Author>
 25     public static void Export(DataTable dtSource, string strHeaderText, string strFileName)
 26     {
 27         using (MemoryStream ms = Export(dtSource, strHeaderText))
 28         {
 29             using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write))
 30             {
 31                 byte[] data = ms.ToArray();
 32                 fs.Write(data, 0, data.Length);
 33                 fs.Flush();
 34             }
 35         }
 36     }
 37 
 38     /// <summary>
 39     /// DataTable   Excel MemoryStream
 40     /// </summary>
 41     /// <param name="dtSource"> DataTable</param>
 42     /// <param name="strHeaderText">    </param>
 43     /// <Author>    http://www.yongfa365.com/ 2010-5-8 22:21:41</Author>
 44     public static MemoryStream Export(DataTable dtSource, string strHeaderText)
 45     {
 46         HSSFWorkbook workbook = new HSSFWorkbook();
 47         HSSFSheet sheet = workbook.CreateSheet();
 48 
 49         #region          
 50         {
 51             DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
 52             dsi.Company = "http://www.yongfa365.com/";
 53             workbook.DocumentSummaryInformation = dsi;
 54 
 55             SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
 56             si.Author = "   "; //  xls      
 57             si.ApplicationName = "NPOI    "; //  xls        
 58             si.LastAuthor = "   2"; //  xls         
 59             si.Comments = "    "; //  xls      
 60             si.Title = "NPOI  "; //  xls      
 61             si.Subject = "NPOI  Demo";//        
 62             si.CreateDateTime = DateTime.Now;
 63             workbook.SummaryInformation = si;
 64         }
 65         #endregion
 66 
 67         HSSFCellStyle dateStyle = workbook.CreateCellStyle();
 68         HSSFDataFormat format = workbook.CreateDataFormat();
 69         dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");
 70 
 71         //    
 72         int[] arrColWidth = new int[dtSource.Columns.Count];
 73         foreach (DataColumn item in dtSource.Columns)
 74         {
 75             arrColWidth[item.Ordinal] = Encoding.GetEncoding(936).GetBytes(item.ColumnName.ToString()).Length;
 76         }
 77         for (int i = 0; i < dtSource.Rows.Count; i++)
 78         {
 79             for (int j = 0; j < dtSource.Columns.Count; j++)
 80             {
 81                 int intTemp = Encoding.GetEncoding(936).GetBytes(dtSource.Rows[i][j].ToString()).Length;
 82                 if (intTemp > arrColWidth[j])
 83                 {
 84                     arrColWidth[j] = intTemp;
 85                 }
 86             }
 87         }
 88 
 89 
 90 
 91         int rowIndex = 0;
 92 
 93         foreach (DataRow row in dtSource.Rows)
 94         {
 95             #region    ,    ,    ,  
 96             if (rowIndex == 65535 || rowIndex == 0)
 97             {
 98                 if (rowIndex != 0)
 99                 {
100                     sheet = workbook.CreateSheet();
101                 }
102 
103                 #region      
104                 {
105                     HSSFRow headerRow = sheet.CreateRow(0);
106                     headerRow.HeightInPoints = 25;
107                     headerRow.CreateCell(0).SetCellValue(strHeaderText);
108 
109                     HSSFCellStyle headStyle = workbook.CreateCellStyle();
110                     headStyle.Alignment = CellHorizontalAlignment.CENTER;
111                     HSSFFont font = workbook.CreateFont();
112                     font.FontHeightInPoints = 20;
113                     font.Boldweight = 700;
114                     headStyle.SetFont(font);
115 
116                     headerRow.GetCell(0).CellStyle = headStyle;
117 
118                     sheet.AddMergedRegion(new Region(0, 0, 0, dtSource.Columns.Count - 1));
119                     headerRow.Dispose();
120                 }
121                 #endregion
122 
123 
124                 #region      
125                 {
126                     HSSFRow headerRow = sheet.CreateRow(1);
127 
128 
129                     HSSFCellStyle headStyle = workbook.CreateCellStyle();
130                     headStyle.Alignment = CellHorizontalAlignment.CENTER;
131                     HSSFFont font = workbook.CreateFont();
132                     font.FontHeightInPoints = 10;
133                     font.Boldweight = 700;
134                     headStyle.SetFont(font);
135 
136 
137                     foreach (DataColumn column in dtSource.Columns)
138                     {
139                         headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
140                         headerRow.GetCell(column.Ordinal).CellStyle = headStyle;
141 
142                         //    
143                         sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256);
144 
145                     }
146                     headerRow.Dispose();
147                 }
148                 #endregion
149 
150                 rowIndex = 2;
151             }
152             #endregion
153 
154 
155             #region     
156             HSSFRow dataRow = sheet.CreateRow(rowIndex);
157             foreach (DataColumn column in dtSource.Columns)
158             {
159                 HSSFCell newCell = dataRow.CreateCell(column.Ordinal);
160 
161                 string drValue = row[column].ToString();
162 
163                 switch (column.DataType.ToString())
164                 {
165                     case "System.String"://     
166                         newCell.SetCellValue(drValue);
167                         break;
168                     case "System.DateTime"://    
169                         DateTime dateV;
170                         DateTime.TryParse(drValue, out dateV);
171                         newCell.SetCellValue(dateV);
172 
173                         newCell.CellStyle = dateStyle;//     
174                         break;
175                     case "System.Boolean"://   
176                         bool boolV = false;
177                         bool.TryParse(drValue, out boolV);
178                         newCell.SetCellValue(boolV);
179                         break;
180                     case "System.Int16"://  
181                     case "System.Int32":
182                     case "System.Int64":
183                     case "System.Byte":
184                         int intV = 0;
185                         int.TryParse(drValue, out intV);
186                         newCell.SetCellValue(intV);
187                         break;
188                     case "System.Decimal"://   
189                     case "System.Double":
190                         double doubV = 0;
191                         double.TryParse(drValue, out doubV);
192                         newCell.SetCellValue(doubV);
193                         break;
194                     case "System.DBNull"://    
195                         newCell.SetCellValue("");
196                         break;
197                     default:
198                         newCell.SetCellValue("");
199                         break;
200                 }
201 
202             }
203             #endregion
204 
205             rowIndex++;
206         }
207 
208 
209         using (MemoryStream ms = new MemoryStream())
210         {
211             workbook.Write(ms);
212             ms.Flush();
213             ms.Position = 0;
214 
215             sheet.Dispose();
216            //workbook.Dispose();//         OK ,           ,             sheet
217             return ms;
218         }
219 
220     }
221 
222 
223     /// <summary>
224     ///   Web  
225     /// </summary>
226     /// <param name="dtSource"> DataTable</param>
227     /// <param name="strHeaderText">    </param>
228     /// <param name="strFileName">   </param>
229     /// <Author>    http://www.yongfa365.com/ 2010-5-8 22:21:41</Author>
230     public static void ExportByWeb(DataTable dtSource, string strHeaderText, string strFileName)
231     {
232 
233         HttpContext curContext = HttpContext.Current;
234 
235         //          
236         curContext.Response.ContentType = "application/vnd.ms-excel";
237         curContext.Response.ContentEncoding = Encoding.UTF8;
238         curContext.Response.Charset = "";
239         curContext.Response.AppendHeader("Content-Disposition", 
240             "attachment;filename=" + HttpUtility.UrlEncode(strFileName, Encoding.UTF8));
241 
242         curContext.Response.BinaryWrite(Export(dtSource, strHeaderText).GetBuffer());
243         curContext.Response.End();
244 
245     }
246 
247 
248     /// <summary>  excel
249     ///         
250     /// </summary>
251     /// <param name="strFileName">excel    </param>
252     /// <returns></returns>
253     public static DataTable Import(string strFileName)
254     {
255         DataTable dt = new DataTable();
256 
257         HSSFWorkbook hssfworkbook;
258         using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read))
259         {
260             hssfworkbook = new HSSFWorkbook(file);
261         }
262         HSSFSheet sheet = hssfworkbook.GetSheetAt(0);
263         System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
264 
265         HSSFRow headerRow = sheet.GetRow(0);
266         int cellCount = headerRow.LastCellNum;
267 
268         for (int j = 0; j < cellCount; j++)
269         {
270             HSSFCell cell = headerRow.GetCell(j);
271             dt.Columns.Add(cell.ToString());
272         }
273 
274         for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
275         {
276             HSSFRow row = sheet.GetRow(i);
277             DataRow dataRow = dt.NewRow();
278 
279             for (int j = row.FirstCellNum; j < cellCount; j++)
280             {
281                 if (row.GetCell(j) != null)
282                     dataRow[j] = row.GetCell(j).ToString();
283             }
284 
285             dt.Rows.Add(dataRow);
286         }
287         return dt;
288     }
289 
290 }



 

 
 
               :
 



http://download.csdn.net/source/2330821
 



    :
 



NPOI  Excel     (     ):http://www.cnblogs.com/zhengjuzhuan/archive/2010/02/01/1661103.html
 
  Server     Excel      :NPOI Library:http://msdn.microsoft.com/zh-tw/ee818993.aspx
 
ASP.NET  NPOI    Excel:http://www.cnblogs.com/niunan/archive/2010/03/30/1700706.html
 
 
 



  :
 



        ,      , NPOI MyXls   Excel     ,    ,   NPOI MyXls         。                ,                  。  NPOI      ,        ,          ,      。     Excel,  MyXls           ,      NPOI。MyXls    Cell.Font.Bold  , NPOI   CellType        。
 






       :.net   NPOI MyXls DataTable   Excel

 

좋은 웹페이지 즐겨찾기