zoukankan      html  css  js  c++  java
  • Excel[.xls|.xlsx|.csv] 导入 导出

    程序集
    1 using System.IO;
    2 using System.Data;
    3 using System.Data.OleDb;
    4 using System.Data.Odbc;
    导入[.xls|.xlsx]
     1  public static DataTable FromExceFile(string pathName)
     2         {
     3             DataSet ds = new DataSet();
     4             try
     5             {
     6 
     7                 FileInfo file = new FileInfo(pathName);
     8                 if (!file.Exists)
     9                 {
    10                     throw new Exception("Not exist!");
    11                 }
    12                 string ext=file.Extension.ToLower();
    13                 if (ext!=".xls" && ext!="xlsx")
    14                 {
    15                     throw new Exception("File Extension Must Be:.xls Or .xlsx");
    16                 }
    17 
    18            
    19                 string xlsConn = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ""
    20                     + @";Extended Properties='Excel 8.0;HDR={0};IMEX=1;'", "YES");
    21 
    22                 //"HDR=Yes;" 第一行是表头,不是数据
    23                 //"IMEX=1;" 把混合数据当作文本读取
    24                 string xlsxConn= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathName 
    25                      + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
    26 
    27 
    28                 OleDbConnection cnn = new OleDbConnection(ext.Equals(".xlsx")?xlsxConn:xlsConn);
    29                 cnn.Open();
    30                 DataTable dttemp = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    31                 string tableName = dttemp.Rows[0][2].ToString().Trim();
    32 
    33                 OleDbCommand com = new OleDbCommand("SELECT * FROM ["+tableName+"]", cnn);
    34                 OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    35                 objAdapter.SelectCommand = com;
    36                 objAdapter.Fill(ds, "TempTable");
    37                 cnn.Close();
    38                 cnn.Dispose();
    39             }
    40             catch (OdbcException ex)
    41             {
    42 
    43             }
    44 
    45             DataTable dt = ds.Tables["TempTable"];
    46             return dt;
    47         }
    导入[.cvs]
     1   public static DataTable FromCsvFile(string pathName)
     2         {
     3             DataSet ds = new DataSet();
     4             DataTable dt;
     5             try
     6             {
     7 
     8                 FileInfo file = new FileInfo(pathName);
     9                 if (!file.Exists)
    10                 {
    11                     throw new Exception("Not exist!");
    12                 }
    13                 if (file.Extension.ToLower()!=".csv")
    14                 {
    15                     throw new Exception("File Extension Must Be .csv");
    16                 }
    17                 string csvConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName 
    18                       + ";Extended Properties='Text;HDR=YES;'";
    19                 OleDbConnection cnn = new OleDbConnection(csvConn);
    20                 cnn.Open();
    21                 OleDbCommand com = new OleDbCommand("SELECT * FROM ["+file.Name +"]", cnn);
    22                 OleDbDataAdapter da=new OleDbDataAdapter();
    23                 da.SelectCommand = com;
    24                 da.Fill(ds, "TempTable");
    25                 da.Dispose();
    26                 cnn.Close();
    27                 cnn.Dispose();
    28 
    29 
    30             }
    31             catch
    32             {
    33                 dt=new DataTable();
    34                 return dt;
    35             }
    36 
    37             dt=ds.Tables["TempTable"];
    38 
    39             return dt;
    40 
    41         }
    导出[.xls|.cvs]
     1   public static void ExportExcel()
     2         {
     3             List<string[]> exportDataList = new List<string[]>();
     4             int FieldCount=3;
     5             string[] titleRow = new string[FieldCount];
     6             int i=0;
     7             titleRow[i++]="Name";
     8             titleRow[i++]="Age";
     9             titleRow[i++]="Tel";
    10             exportDataList.Add(titleRow);
    11 
    12             for(int k=0;k<10;k++)
    13             {
    14                 i=0;
    15                 string[] row = new string[FieldCount];
    16                 row[i++]="Name "+k;
    17                 row[i++]="Age "+k;
    18                 row[i++]="Tel "+k;
    19                 exportDataList.Add(row);
    20             }
    21             Export(exportDataList,"export.xls");
    22         }
    23         public static void Export(List<string[]> dataList,string fileName)
    24         {             
    25 
    26             string rowTmp="<td style=\"vnd.ms-excel.numberformat:@\">{0}</td>";
    27             string html = "";
    28             html += "<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">";
    29             html += "<head>";
    30             html += "<!--[if gte mso 9]>";
    31             html += "<xml>";
    32             html += " <x:ExcelWorkbook>";
    33             html += " <x:ExcelWorksheets>";
    34             html += " <x:ExcelWorksheet>";
    35             html += " <x:Name>Winner</x:Name>";
    36             html += " <x:WorksheetOptions>";
    37             html += " <x:Print>";
    38             html += " <x:ValidPrinterInfo />";
    39             html += " </x:Print>";
    40             html += " </x:WorksheetOptions>";
    41             html += " </x:ExcelWorksheet>";
    42             html += " </x:ExcelWorksheets>";
    43             html += "</x:ExcelWorkbook>";
    44             html += "</xml>";
    45             html += "<![endif]-->";
    46             html += "</head>";
    47             html += "<body>";
    48             html += "<table>";
    49 
    50             bool IsHeader=true;
    51             foreach (var row in dataList)
    52             {
    53                 string r="";
    54                 string rowTemplate=rowTmp;
    55                 if (IsHeader)
    56                 {
    57                     IsHeader=false;
    58                     rowTemplate="<td><strong>{0}</strong></td>";
    59                 }                   
    60                      
    61                 foreach(var fielddata in row)
    62                 {
    63                     r+=string.Format(rowTemplate, fielddata);
    64                 }                  
    65              
    66                 html+=(string.Format("<tr>{0}</tr>", r));
    67             }
    68                   
    69          
    70             html += "</table>";
    71             html += "</body>";
    72             html += "</html>";
    73 
    74 
    75             HttpResponse resp=Page.Response;
    76             resp.ContentEncoding = System.Text.Encoding.Default;
    77             resp.AppendHeader("Content-Disposition", "attachment;filename="+fileName);
    78             resp.ContentType = "application/ms-excel";
    79             resp.Clear();
    80             resp.Write(html);
    81             resp.Flush();
    82             resp.End();
    83         }

     Excel单元格的格式:

     使用<td style="vnd.ms-excel.numberformat:@"></td> 进行设置

        //1) 文本:vnd.ms-excel.numberformat:@
       
    //2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
       
    //3) 数字:vnd.ms-excel.numberformat:#,##0.00
       
    //4) 货币:vnd.ms-excel.numberformat:¥#,##0.00
       
    //5) 百分比:vnd.ms-excel.numberformat: #0.00%

     1 <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     2    xmlns:x="urn:schemas-microsoft-com:office:excel"
     3    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     4    xmlns:html="http://www.w3.org/TR/REC-html40">
     5 
     6 <x:ExcelWorkbook>
     7     <WindowHeight>1000</WindowHeight>
     8     <WindowWidth>1000</WindowWidth>     
     9 </x:ExcelWorkbook>
    10 
    11 <ss:Styles>
    12     <ss:Style ss:ID="Default" ss:Name="Normal">
    13         <Font x:Family="Swiss" ss:Size="10" ss:Bold="0"/>
    14         <ss:Alignment ss:Vertical="Bottom"/>
    15     </ss:Style>
    16     <ss:Style ss:ID="s22">
    17         <Font x:Family="Swiss" ss:Size="12" ss:Bold="1"/>
    18         <ss:NumberFormat ss:Format="0.00;[Red]0.00"/>
    19     </ss:Style>
    20 </ss:Styles>
    21  
    22 
    23 <Worksheet ss:Name="Sheet one">  
    24       
    25     <ss:Table>
    26         <ss:Row>
    27             <ss:Cell>
    28                 <ss:Data ss:Type="String">Total</ss:Data>
    29             </ss:Cell>
    30             <ss:Cell ss:StyleID="s22">
    31                 <ss:Data ss:Type="Number">-45</ss:Data>
    32             </ss:Cell>
    33             <ss:Cell ss:StyleID="s22">
    34                 <ss:Data ss:Type="Number">-99.3</ss:Data>
    35             </ss:Cell>
    36 
    37            <ss:Cell ss:Index="8" ss:Formula="=AVERAGE(RC[-6]:RC[-5])"></ss:Cell>
    38            </ss:Row>
    39 
    40            <ss:Row>
    41             <ss:Cell ss:MergeAcross="1" ss:MergeDown="1">
    42             <ss:Data ss:Type="String">Monday tip</ss:Data>
    43             <ss:Comment ss:Author="Author" ss:ShowAlways="1">
    44                  <ss:Data><html:B><html:Font html:Face="Tahoma" html:Size="8" html:Color="000000">Author:</html:Font></html:B>
    45                                   <html:Font html:Face="Tahoma" html:Size="8" html:Color="000000">&10;The </html:Font>
    46                           <html:B><html:Font html:Face="Tahoma" x:Family="Swiss" html:Size="8" html:Color="000000">first</html:Font></html:B>
    47                                   <html:Font html:Face="Tahoma" x:Family="Swiss" html:Size="8" html:Color="000000"> day of the week.</html:Font>
    48                   </ss:Data>
    49               </ss:Comment>
    50             </ss:Cell>
    51            <ss:Cell ss:Index="7" ss:HRef="http://www.microsoft.com">
    52                       <ss:Data ss:Type="String">Linked Cell</ss:Data>
    53            </ss:Cell>
    54 
    55         </ss:Row>
    56     </ss:Table> 
    57 </Worksheet>
    58 
    59 
    60 
    61 </Workbook>
    XML格式

     该实例使用的命名空间:

       xmlns="urn:schemas-microsoft-com:office:spreadsheet"
       xmlns:x="urn:schemas-microsoft-com:office:excel"
       xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
       xmlns:html="http://www.w3.org/TR/REC-html40"

  • 相关阅读:
    后缀表达式
    Linux中的硬链接和软链接
    C++中const总结
    atexit()函数
    Linux中的0号进程和1号进程
    什么是可重入函数和不可重入函数
    在线(Online)算法
    PHP验证IP地址输入的准确性:数组数值验证
    PHP网页计时工具——SESSION问题
    软件版本号命名规则
  • 原文地址:https://www.cnblogs.com/AspDotNetMVC/p/2767687.html
Copyright © 2011-2022 走看看