using System;
using
System.Collections.Generic;
using System.Linq;
using System.Web;
using
System.Web.UI;
using System.Web.UI.WebControls;
using
System.Data.SqlClient;
using System.Data;
using System.Xml;
using
System.Xml.Xsl;
using System.IO;
using System.Data.OleDb;
using
System.Data.Odbc;
using System.Text;
using Excel =
Microsoft.Office.Interop.Excel;
namespace fantest
{
public partial class
_Default : System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
Bind();
}
protected void Bind()
{
this.GridView1.DataSource = this.GetDataTable();
this.GridView1.DataBind();
}
private DataTable
GetDataTable()
{
DataSet ds = new
DataSet();
using (SqlConnection conn = new
SqlConnection("server=.;uid=sa;pwd=123456;database=test"))
{
string sql = "select * from InfoTable where
1=1";
SqlDataAdapter dap = new SqlDataAdapter(sql,
conn);
dap.Fill(ds,"InfoTable");
}
return ds.Tables["InfoTable"];
}
//TO
XML
protected void Button1_Click(object sender, EventArgs
e)
{
DataTable dt =
this.GetDataTable();
StringBuilder sb = new
StringBuilder();
sb.Append("<" + dt.TableName +
">");
foreach (DataRow row in dt.Rows)
{
sb.Append("<item>");
for (int i = 0; i < dt.Columns.Count;
i++)
{
sb.Append("<" +
dt.Columns[i].ColumnName + ">" + row[i].ToString() + "</" +
dt.Columns[i].ColumnName + ">");
}
sb.Append("</item>");
}
sb.Append("</" +
dt.TableName + ">");
Response.ClearHeaders();
Response.AppendHeader("Content-Disposition", "attachment;
filename=ss.xml");
Response.ContentType =
"text/csv";
Response.Write(sb.ToString());
Response.End();
}
//FROM XML
protected void
Button2_Click(object sender, EventArgs e)
{
string filepath = Server.MapPath("ss.xml");
if
(!File.Exists(filepath))
{
Page.RegisterClientScriptBlock("msg",
"<script>alert('该文件不存在!')</script>");
}
else
{
StringReader
StrStream = null;
XmlTextReader Xmlrdr =
null;
try
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(filepath);
DataSet ds = new
DataSet();
ds.ReadXml(new XmlTextReader(new
StringReader(xmldoc.InnerXml)));
this.GridView2.DataSource = ds.Tables[0];
this.GridView2.DataBind();
}
catch
(Exception ex)
{
throw
ex;
}
finally
{
if (Xmlrdr != null)
{
Xmlrdr.Close();
StrStream.Close();
StrStream.Dispose();
}
}
}
}
//TO EXCEL
protected void
Button3_Click(object sender, EventArgs e)
{
//Response.Charset = "GB2312";
//Response.ContentEncoding =
System.Text.Encoding.UTF7;
//Response.AppendHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode("ss.xls", Encoding.UTF8).ToString());
//Response.ContentType = "application/vnd.ms-excel";
//this.EnableViewState = false;
//StringWriter tw = new
StringWriter();
//HtmlTextWriter hw = new
HtmlTextWriter(tw);
//this.GridView1.RenderControl(hw);
//Response.Write(tw.ToString());
//Response.End();
//上面注释的代码是一种以流的方式导入excel的,当数据在从此excel读取时会报一个异常,如果要对excel写入和读取最好用下面一种方式
DataTable dt =
this.GetDataTable();
string filepath =
HttpContext.Current.Server.MapPath("ss.xls");
Excel.Application xlApp = new Excel.Application();
Excel.Workbooks w= xlApp.Workbooks;
Excel.Workbook workbook =
w.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet
worksheet = (Excel.Worksheet)workbook.Worksheets[1];
//写入字段
for (int i = 0; i < dt.Columns.Count;
i++)
{
worksheet.Cells[1, i + 1] =
dt.Columns[i].ColumnName;
}
//写入数值
for (int r = 0; r < dt.Rows.Count;
r++)
{
for (int i = 0; i <
dt.Columns.Count; i++)
{
worksheet.Cells[r + 2, i + 1] = dt.Rows[r][i];
}
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
workbook.Saved = true;
workbook.SaveCopyAs(filepath);
xlApp.Quit();
GC.Collect();//强行销毁
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType =
"application/ms-excel";
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment;filename=" + HttpUtility.UrlEncode(filepath));
HttpContext.Current.Response.WriteFile(filepath);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
//FROM
EXCEL
protected void Button4_Click(object sender, EventArgs
e)
{
//Office 2007 连接字符串
//string
strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + @path + ";" +
"Extended Properties=Excel 12.0;"
//Office 98-2003
连接字符串(此示例使用2003)
string filepath =
Server.MapPath("ss.xls");
if
(!File.Exists(filepath))
{
Page.RegisterClientScriptBlock("msg",
"<script>alert('该文件不存在!')</script>");
}
else
{
string strConn =
"Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filepath + ";Extended
Properties='Excel 8.0; HDR=YES; IMEX=1'";
OleDbConnection
conn = new OleDbConnection(strConn);
OleDbDataAdapter odda =
new OleDbDataAdapter("select * from [Sheet1$]", conn);
DataSet ds = new DataSet();
odda.Fill(ds);
this.GridView2.DataSource = ds.Tables[0];
this.GridView2.DataBind();
}
}
//TO
CSV
protected void Button5_Click(object sender, EventArgs
e)
{
DataTable dt =
this.GetDataTable();
HttpContext.Current.Response.Clear();
System.IO.StringWriter sw =
new System.IO.StringWriter();
int iColCount =
dt.Columns.Count;
for (int i = 0; i < iColCount;
i++)
{
sw.Write("\"" + dt.Columns[i] +
"\"");
if (i < iColCount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
foreach (DataRow dr in
dt.Rows)
{
for (int i = 0; i < iColCount;
i++)
{
if
(!Convert.IsDBNull(dr[i]))
sw.Write("\"" +
dr[i].ToString() + "\"");
else
sw.Write("\"\"");
if (i < iColCount -
1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
}
sw.Close();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;
filename=ss.csv");
HttpContext.Current.Response.ContentType =
"application/vnd.ms-excel";
HttpContext.Current.Response.ContentEncoding =
System.Text.Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.Write(sw);
HttpContext.Current.Response.End();
}
//FROM
CSV
protected void Button6_Click(object sender, EventArgs
e)
{
string filepath =
Server.MapPath("ss.csv");
if
(!File.Exists(filepath))
{
Page.RegisterClientScriptBlock("msg",
"<script>alert('该文件不存在!')</script>");
}
else
{
string strConn = @"Driver={Microsoft Text Driver
(*.txt; *.csv)};Dbq=";
strConn +=
";Extensions=asc,csv,tab,txt;";
OdbcConnection
objConn = new OdbcConnection(strConn);
DataSet ds =
new DataSet();
try
{
string strSql = "select * from " +
filepath;
OdbcDataAdapter odbcCSVDataAdapter =
new OdbcDataAdapter(strSql, objConn);
odbcCSVDataAdapter.Fill(ds);
this.GridView2.DataSource = ds.Tables[0];
this.GridView2.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}
}
}
}
此段代码是针对DataTable 对xml、excel、csv
对文件的导入和导出功能,记录一下,以供以后使用。 一定要导入excel 并添加引用Microsoft.Office.Interop.Excel
11.0版本。 Default.aspx.cs文件 Default.aspx文件: <%@ Page Language="C#" EnableEventValidation =
"false" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="fantest._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
>
<head runat="server">
<title></title>
</head>
<body >
<form
id="form1" runat="server">
<asp:GridView ID="GridView1"
runat="server">
</asp:GridView>
<asp:GridView
ID="GridView2" runat="server">
</asp:GridView>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="toxml"
/>
<asp:Button ID="Button2" runat="server"
onclick="Button2_Click"
Text="from xml" />
<asp:Button ID="Button3" runat="server" onclick="Button3_Click"
Text="toexcel" />
<asp:Button ID="Button4"
runat="server" onclick="Button4_Click"
Text="fromexcel"
/>
<asp:Button ID="Button5" runat="server"
onclick="Button5_Click" Text="tocsv" />
<asp:Button
ID="Button6" runat="server" onclick="Button6_Click"
Text="fromcsv" />
</form>
</body>
</html>