1、文本文件 导入
public DataTable TextToDataTable(string pathName)
...{
string ReadLine;
string[] array;
DataTable dt = new DataTable();
dtCard.Columns.Add("column name 1");
dtCard.Columns.Add("column name 2");
if (File.Exists(pathName))
...{
StreamReader reader = new StreamReader(pathName, System.Text.Encoding.GetEncoding("GB2312"));
while (reader.Peek() >= 0)
...{
ReadLine = reader.ReadLine();
if (ReadLine != "")
...{
array = ReadLine.Split(',');//记录分隔符(此处为,)
DataRow DRow = dt.NewRow();
DRow["column name 1"] = array[0].Trim();
DRow["column name 2"] = array[1].Trim();
dt.Rows.Add(DRow);
}
}
}
return dt;
}
...{
string ReadLine;
string[] array;
DataTable dt = new DataTable();
dtCard.Columns.Add("column name 1");
dtCard.Columns.Add("column name 2");
if (File.Exists(pathName))
...{
StreamReader reader = new StreamReader(pathName, System.Text.Encoding.GetEncoding("GB2312"));
while (reader.Peek() >= 0)
...{
ReadLine = reader.ReadLine();
if (ReadLine != "")
...{
array = ReadLine.Split(',');//记录分隔符(此处为,)
DataRow DRow = dt.NewRow();
DRow["column name 1"] = array[0].Trim();
DRow["column name 2"] = array[1].Trim();
dt.Rows.Add(DRow);
}
}
}
return dt;
}
2、Excel文件 导入
public DataTable GetEnterContent(string source)
...{
string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0;";
OleDbConnection con = new OleDbConnection(ConnStr);
OleDbCommand com = new OleDbCommand("SELECT * FROM [Sheet1$]", con);
OleDbDataAdapter ada = new OleDbDataAdapter(com);
DataTable dt = new DataTable();
ada.Fill(dt);
return dt;
}
...{
string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0;";
OleDbConnection con = new OleDbConnection(ConnStr);
OleDbCommand com = new OleDbCommand("SELECT * FROM [Sheet1$]", con);
OleDbDataAdapter ada = new OleDbDataAdapter(com);
DataTable dt = new DataTable();
ada.Fill(dt);
return dt;
}
3、 将DataGrid导出为不同格式的文档
using System.IO;
using System.Text;
using System.Web;
using System.Web.UI;
namespace Jeky.Web
...{
/**//**//**//// <summary>
/// 输入文件的类型。
/// </summary>
public enum ExportType
...{
/**//**//**//// <summary>
/// 格式:*.htm、*.html等。
/// </summary>
Html,
/**//**//**//// <summary>
/// 格式:*.doc。
/// </summary>
Word,
/**//**//**//// <summary>
/// 格式:*.xls。
/// </summary>
Excel,
} ;
/**//**//**//// <summary>
/// 有关文件的一些操作方法。
/// </summary>
public class FileHandle
...{
/**//**//**//// <summary>
/// 初始化 <see cref="Jeky.Web.FileHandle">FileHandle</see> 类的新实例。
/// </summary>
public FileHandle()
...{
}
/**//**//**//// <summary>
/// 将 Control 信息导出为某种特定类型的文件。
/// </summary>
/// <param name="ctl">Control,如 DataGrid 对象。</param>
/// <param name="strFileName">导出后的文件名称。</param>
/// <param name="et">导出类型。</param>
/// <example>将 Customers 表中的一组数据导出为 Word 文档
/// <code escaped="true">
/// void bt_click(object sender,EventArgs e){
/// SqlType ST=new SqlType();
/// Common CM=new Common();
/// // 创建一个 SqlConnection 对象
/// SqlConnection conn=ST.GetConn("server=localhost; database=Northwind; uid=sa; pwd=",false);
/// conn.Open();
/// string strSql="Select Top 10 CustomerID,CompanyName,ContactName,Address,City From Customers";
/// SqlCommand cmd=new SqlCommand(strSql,conn);
/// // 设置 DataGird 对象的数据源
/// myDataGrid.DataSource=cmd.ExecuteReader();
/// // 绑定信息
/// myDataGrid.DataBind();
/// conn.Close();
/// // 将 DataGrid 对象中的信息导出为指定格式的文件
/// CM.ToExportFile(myDataGrid,"Customers.doc",ExportType.Word);
/// }
/// </code>
/// </example>
/// <remarks>
/// 一、当对象(如DataGrid)有分页时,该方法会出现错误。
/// 二、当数据集中有不能认别的符号时,可能会出现乱码,没法处理。
/// </remarks>
public static void ToExportFile(Control ctl, string strFileName, ExportType et)
...{
string[] ETArray = new string[]
...{
"text/HTML", "application/msword", "application/ms-excel"
};
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName)); // 使用 UrlEncode 方法可以正确地输出中文名称。
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = Encoding.Default;
HttpContext.Current.Response.ContentType = ETArray[(int) et];
ctl.Page.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
}
}
using System.Text;
using System.Web;
using System.Web.UI;
namespace Jeky.Web
...{
/**//**//**//// <summary>
/// 输入文件的类型。
/// </summary>
public enum ExportType
...{
/**//**//**//// <summary>
/// 格式:*.htm、*.html等。
/// </summary>
Html,
/**//**//**//// <summary>
/// 格式:*.doc。
/// </summary>
Word,
/**//**//**//// <summary>
/// 格式:*.xls。
/// </summary>
Excel,
} ;
/**//**//**//// <summary>
/// 有关文件的一些操作方法。
/// </summary>
public class FileHandle
...{
/**//**//**//// <summary>
/// 初始化 <see cref="Jeky.Web.FileHandle">FileHandle</see> 类的新实例。
/// </summary>
public FileHandle()
...{
}
/**//**//**//// <summary>
/// 将 Control 信息导出为某种特定类型的文件。
/// </summary>
/// <param name="ctl">Control,如 DataGrid 对象。</param>
/// <param name="strFileName">导出后的文件名称。</param>
/// <param name="et">导出类型。</param>
/// <example>将 Customers 表中的一组数据导出为 Word 文档
/// <code escaped="true">
/// void bt_click(object sender,EventArgs e){
/// SqlType ST=new SqlType();
/// Common CM=new Common();
/// // 创建一个 SqlConnection 对象
/// SqlConnection conn=ST.GetConn("server=localhost; database=Northwind; uid=sa; pwd=",false);
/// conn.Open();
/// string strSql="Select Top 10 CustomerID,CompanyName,ContactName,Address,City From Customers";
/// SqlCommand cmd=new SqlCommand(strSql,conn);
/// // 设置 DataGird 对象的数据源
/// myDataGrid.DataSource=cmd.ExecuteReader();
/// // 绑定信息
/// myDataGrid.DataBind();
/// conn.Close();
/// // 将 DataGrid 对象中的信息导出为指定格式的文件
/// CM.ToExportFile(myDataGrid,"Customers.doc",ExportType.Word);
/// }
/// </code>
/// </example>
/// <remarks>
/// 一、当对象(如DataGrid)有分页时,该方法会出现错误。
/// 二、当数据集中有不能认别的符号时,可能会出现乱码,没法处理。
/// </remarks>
public static void ToExportFile(Control ctl, string strFileName, ExportType et)
...{
string[] ETArray = new string[]
...{
"text/HTML", "application/msword", "application/ms-excel"
};
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName)); // 使用 UrlEncode 方法可以正确地输出中文名称。
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = Encoding.Default;
HttpContext.Current.Response.ContentType = ETArray[(int) et];
ctl.Page.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
}
}
另外,如果DataGrid中存在较长的数字值,例如“身份证”字段时,导出的Excel可能会以下格式出现:4.11303E+14,解决方法:
// 在 DataBound 事件中处理
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
...{
e.Item.Cells[2].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
}
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
...{
e.Item.Cells[2].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
}