Execl完美导出
今天需要做个excel导入导出的,小弟先搞个导出的,感觉还蛮不错很方便详细看下文:
1、引入org.in2bits.MyXls.dll 这个dll引入后什么问题都简单了
前台code
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="导出EXCEL" />
后台code
protected void Button1_Click(object sender, EventArgs e)
{
NewsService service = new NewsService();
DataTable dt = service.Get_AllData_Table();
TableTOExcel(dt, "double.xls");
}
#region "导出EXCEL"
/// <summary>
/// 绑定数据库生成XLS报表
/// </summary>
/// <param name="ds">获取DataSet数据集</param>
/// <param name="xlsName">报表表名</param>
public static void TableTOExcel(DataTable table, string xlsName)
{
if (table == null) return;
XlsDocument xls = new XlsDocument();
xls.FileName = xlsName;
int rowIndex = 1;
DataTable dt2 = null;
int maxlen = 65500;
int rowcount = table.Rows.Count;
for (int p = 0; p <= rowcount / maxlen; p++)
{
dt2 = SplitDataTbale(table, maxlen, p);
rowIndex = 1;
Worksheet sheet = xls.Workbook.Worksheets.AddNamed("sheet" + (p + 1).ToString());//状态栏标题名称
Cells cells = sheet.Cells;
for (int i = 0; i < table.Columns.Count; i++)
{
cells.AddValueCell(1, i + 1, dt2.Columns[i].ColumnName);
}
foreach (DataRow row in dt2.Rows)
{
rowIndex++;
for (int j = 0; j < dt2.Columns.Count; j++)
{
sheet.Cells.AddValueCell(rowIndex, j + 1, row[j].ToString());
}
}
}
xls.Send();
}
private static DataTable SplitDataTbale(DataTable dt, int RowCount, int p)
{
DataTable dt2 = new DataTable("temp");
for (int j = 0; j < dt.Columns.Count; j++)
{
dt2.Columns.Add(new DataColumn(dt.Columns[j].ColumnName, dt.Columns[j].DataType));
}
for (int i = p * RowCount; i < p * RowCount + RowCount && i < dt.Rows.Count; i++)
{
DataRow dr = dt2.NewRow();
for (int k = 0; k < dt.Columns.Count; k++)
dr[k] = dt.Rows[i][k];
dt2.Rows.Add(dr);
}
return dt2;
}
#endregion
其中 DataTable dt = service.Get_AllData_Table();就是获取一个这个表的所有data table,不用我这种方法也行~
点击导出就完美导出了~~~在下新手请各位大牛指教~

浙公网安备 33010602011771号