日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中写入Excel

發布時間:2023/12/18 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中写入Excel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Web;
using?System.Data;
namespace?Common.BaseClass
{
public?class?FileExport
{
#region?導出文件為?Excel文件?文本格式
///?<summary>
///?導出文件為?Excel文件
///?</summary>
///?<param?name="dt">數據集</param>
///?<param?name="FileName">導出文件名稱</param>
///?<param?name="headers">列名</param>
///?<param?name="remark">備注</param>
public?void?CreateExcel(DataTable?dt,?string?FileName,?string[]?headers,?string[]?remark)
{

HttpResponse?resp;
resp?
=?HttpContext.Current.Response;
resp.ContentEncoding?
=?System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader(
"Content-Disposition",?"attachment;filename="?+?FileName);
//標題?內容
string?colHeaders?=?"",?ls_item?=?"";
int?i?=?0;

DataRow[]?myRow?
=?dt.Select("");
for?(i?=?0;?i?<?remark.Length;?i++)
{
colHeaders?
+=?remark[i]?+?"\n";
}
//取得數據表各列標題,各標題之間以\t分割,最后一個列標題后加回車符
for?(i?=?0;?i?<?headers.Length;?i++)
{
colHeaders?
+=?headers[i]?+?"\t";
}
colHeaders?
+=?"\n";
//向HTTP輸出流中寫入取得的數據信息
resp.Write(colHeaders);
//逐行處理數據
foreach?(DataRow?row?in?myRow)
{
//在當前行中,逐列獲得數據,數據之間以\t分割,結束時加回車符\n
for?(i?=?0;?i?<?dt.Columns.Count;?i++)
{
ls_item?
+=?row[i].ToString()?+?"\t";
//當前行數據寫入HTTP輸出流,并且置空ls_item以便下行數據
}
ls_item?
+=?"\n";
resp.Write(ls_item);
ls_item?
=?"";
}

//寫緩沖區中的數據到HTTP頭文件中
resp.End();
}
#endregion
///?<summary>
///?將Dataset中的表導出到Excel中
///?</summary>
///?<param?name="source">源數據集</param>
///?<param?name="fileName">保存的文件名</param>
///?<param?name="title">標題</param>
///?<param?name="headers">列名</param>
///?<param?name="explain">文件生成說明</param>
///?<param?name="ps">注釋</param>
public?static?void?ExportToExcel(DataTable?source,?string?fileName,?string[]?headers,?string?title,?string?explain,string?[]ps)
{
HttpResponse?resp;
resp?
=?HttpContext.Current.Response;
resp.ContentEncoding?
=?System.Text.Encoding.GetEncoding("utf-8");
resp.AppendHeader(
"Content-Disposition",?"attachment;filename="?+?fileName);


string?startExcelXML?=?@"<?xml?version=""1.0""?encoding=""utf-8""?>
<Workbook?xmlns=""urn:schemas-microsoft-com:office:spreadsheet""
xmlns:o=""urn:schemas-microsoft-com:office:office""
xmlns:x=""urn:schemas-?microsoft-com:office:excel""
xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet"">
<Styles>
<Style?ss:ID=""Default""?ss:Name=""Normal"">
<Alignment?ss:Horizontal=""Center""?ss:Vertical=""Center""/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style?ss:ID=""BoldColumn"">
<Borders>
<Border?ss:Position=""Bottom""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Left""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Right""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Top""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
</Borders>
<Font?ss:FontName=""宋體""?ss:Bold=""1""?x:CharSet=""134""?ss:Size=""12""?/>
<Interior?ss:Color=""#D2EAF6""?ss:Pattern=""Solid""/>
</Style>
<Style?ss:ID=""StringLiteral"">
<NumberFormat?ss:Format=""@""/>
<Borders>
<Border?ss:Position=""Bottom""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Left""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Right""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Top""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
</Borders>
<Font?ss:FontName=""宋體""?x:CharSet=""134""?ss:Size=""12""?/>
</Style>
<Style?ss:ID=""Decimal"">
<NumberFormat?ss:Format=""0.00""/>
<Borders>
<Border?ss:Position=""Bottom""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Left""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Right""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Top""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
</Borders>
<Font?ss:FontName=""宋體""?x:CharSet=""134""?ss:Size=""12""?/>
</Style>
<Style?ss:ID=""Integer"">
<NumberFormat?ss:Format=""0""/>
<Borders>
<Border?ss:Position=""Bottom""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Left""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Right""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Top""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
</Borders>
<Font?ss:FontName=""宋體""?x:CharSet=""134""?ss:Size=""12""?/>
</Style>
<Style?ss:ID=""DateLiteral"">
<NumberFormat?ss:Format=""yyyy-MM-dd?HH:mm;@""/>
<Borders>
<Border?ss:Position=""Bottom""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Left""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Right""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Top""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
</Borders>
<Font?ss:FontName=""宋體""?x:CharSet=""134""?ss:Size=""12""?/>
</Style>
<Style?ss:ID=""ps""><!--注釋-->
<Alignment?ss:Horizontal=""Left""?ss:Vertical=""Center""/>
<Font?ss:FontName=""宋體""?x:CharSet=""134""/>
<Interior?ss:Color=""#FFFFCC""?ss:Pattern=""Solid""/>
</Style>
<Style?ss:ID=""explain""><!--說明:數據跟據什么而來-->
<Alignment?ss:Horizontal=""Left""?ss:Vertical=""Center""/>
<Borders>
<Border?ss:Position=""Bottom""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
<Border?ss:Position=""Top""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
</Borders>
<Font?ss:FontName=""宋體""?x:CharSet=""134""?ss:Size=""12""/>
</Style>
<Style?ss:ID=""Title""><!--大標題-->
<Alignment?ss:Horizontal=""Center""?ss:Vertical=""Center""/>
<Borders>
<Border?ss:Position=""Bottom""?ss:LineStyle=""Continuous""?ss:Weight=""1""/>
</Borders>
<Font?ss:FontName=""宋體""?x:CharSet=""134""?ss:Size=""16""?ss:Bold=""1""/>
</Style>
</Styles>
";
string?endExcelXML?=?"\r\n</Workbook>";

int?rowCount?=?0;
int?sheetCount?=?0;
resp.Write(startExcelXML);
sheetCount
++;
resp.Write(
"\r\n<Worksheet?ss:Name=\""?+?title?+?"\">");
resp.Write(
"\r\n<Table>");

//寫標題
resp.Write("\r\n<Row>\r\n<Cell?ss:MergeAcross=\""?+?(source.Columns.Count?-?1)?+?"\"?ss:StyleID=\"Title\"><Data?ss:Type=\"String\">"?+?title?+?"</Data></Cell>\t\t\t\r\n</Row>");
//寫數據來源
resp.Write("\r\n<Row>\r\n<Cell?ss:MergeAcross=\""?+?(source.Columns.Count?-?1)?+?"\"?ss:StyleID=\"explain\"><Data?ss:Type=\"String\">"?+?explain?+?"</Data></Cell>\r\n</Row>");

resp.Write(
"\r\n<Row>");
//得到數據集有多少列
//for?(int?x?=?0;?x?<?source.Columns.Count;?x++)
//{
//?resp.Write("<Cell?ss:StyleID=\"BoldColumn\"><Data?ss:Type=\"String\">");
//?resp.Write(source.Columns[x].ColumnName);
//?resp.Write("</Data></Cell>");
//}//New?自己定義列名
for?(int?x?=?0;?x?<?headers.Length;?x++)
{
resp.Write(
"\r\n<Cell?ss:StyleID=\"BoldColumn\"><Data?ss:Type=\"String\">");
resp.Write(headers[x]);
resp.Write(
"</Data></Cell>");
}
resp.Write(
"</Row>");

//便歷出數據集中的每一行數據
foreach?(DataRow?x?in?source.Rows)
{
rowCount
++;
//如果行數超過 陸萬肆仟行,則新起一頁
if?(rowCount?==?64000)
{
rowCount?
=?0;
sheetCount
++;
resp.Write(
"\r\n</Table>");
resp.Write(
"?\r\n</Worksheet>");
resp.Write(
"\r\n<Worksheet?ss:Name=\""?+?source.TableName?+?sheetCount?+?"\">");
resp.Write(
"\r\n<Table>");
}

resp.Write(
"\r\n<Row>");?//ID="?+?rowCount?+?"

for?(int?y?=?0;?y?<?source.Columns.Count;?y++)
{
System.Type?rowType;
//獲得將要寫入數據的數據類型
rowType?=?x[y].GetType();
switch?(rowType.ToString())
{
case?"System.String":
string?XMLstring?=?x[y].ToString();
XMLstring?
=?XMLstring.Trim();
XMLstring?
=?XMLstring.Replace("&",?"&");
XMLstring?
=?XMLstring.Replace(">",?">");
XMLstring?
=?XMLstring.Replace("<",?"<");
resp.Write(
"\r\n<Cell?ss:StyleID=\"StringLiteral\">"?+
"<Data?ss:Type=\"String\">");
resp.Write(XMLstring);
resp.Write(
"</Data></Cell>");
break;
case?"System.DateTime":
//Excel?has?a?specific?Date?Format?of?YYYY-MM-DD?followed?by
//the?letter?'T'?then?hh:mm:sss.lll?Example?2005-01-31T24:01:21.000
//The?Following?Code?puts?the?date?stored?in?XMLDate
//to?the?format?above
DateTime?XMLDate?=?(DateTime)x[y];
string?XMLDatetoString?=?"";?//Excel?Converted?Date
XMLDatetoString?=?XMLDate.Year.ToString()?+
"-"?+
(XMLDate.Month?
<?10???"0"?+
XMLDate.Month.ToString()?:?XMLDate.Month.ToString())?
+
"-"?+
(XMLDate.Day?
<?10???"0"?+
XMLDate.Day.ToString()?:?XMLDate.Day.ToString())?
+
"T"?+
(XMLDate.Hour?
<?10???"0"?+
XMLDate.Hour.ToString()?:?XMLDate.Hour.ToString())?
+
":"?+
(XMLDate.Minute?
<?10???"0"?+
XMLDate.Minute.ToString()?:?XMLDate.Minute.ToString())?
+
":"?+
(XMLDate.Second?
<?10???"0"?+
XMLDate.Second.ToString()?:?XMLDate.Second.ToString())?
+
".000";
resp.Write(
"\r\n<Cell?ss:StyleID=\"DateLiteral\">"?+
"<Data?ss:Type=\"DateTime\">");
resp.Write(XMLDatetoString);
resp.Write(
"</Data></Cell>");
break;
case?"System.Boolean":
resp.Write(
"\r\n<Cell?ss:StyleID=\"StringLiteral\">"?+
"<Data?ss:Type=\"String\">");
resp.Write(x[y].ToString());
resp.Write(
"</Data></Cell>");
break;
case?"System.Int16":
case?"System.Int32":
case?"System.Int64":
case?"System.Byte":
resp.Write(
"\r\n<Cell?ss:StyleID=\"Integer\">"?+
"<Data?ss:Type=\"Number\">");
resp.Write(x[y].ToString());
resp.Write(
"</Data></Cell>");
break;
case?"System.Decimal":
case?"System.Double":
resp.Write(
"\r\n<Cell?ss:StyleID=\"Decimal\">"?+
"<Data?ss:Type=\"Number\">");
resp.Write(x[y].ToString());
resp.Write(
"</Data></Cell>");
break;
case?"System.DBNull":
resp.Write(
"\r\n<Cell?ss:StyleID=\"StringLiteral\">"?+
"<Data?ss:Type=\"String\">");
resp.Write(
"");
resp.Write(
"</Data></Cell>");
break;
default:
throw?(new?Exception(rowType.ToString()?+?"?not?handled."));
}
}
resp.Write(
"\r\n</Row>");
}
//注釋
foreach?(string?str?in?ps)
{
resp.Write(
"\r\n<Row>\r\n<Cell?ss:MergeAcross=\""?+?(source.Columns.Count?-?1)?+?"\"?ss:StyleID=\"ps\"><Data?ss:Type=\"String\">"?+?str?+?"</Data></Cell>\r\n</Row>");
}
resp.Write(
"\r\n</Table>");
resp.Write(
"\r\n</Worksheet>");

resp.Write(endExcelXML);

resp.End();
}
}
}


轉載于:https://www.cnblogs.com/raindust/archive/2007/08/16/857479.html

總結

以上是生活随笔為你收集整理的C#中写入Excel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。