导出Datatable与超过二十万行优秀

我正在试图导出一个数据表在我的应用程序中出色。 但是我的数据表包含了超过二十万条logging,而且我只能向excel写入65536条logging。

在谷歌search了很多之后,才知道只有65536条logging可以写入比2007年更早的版本。

如果我们能写出超过65536条logging,请让我知道

我没有在我的应用程序中使用微软办公室库我正在使用我自己的一个类写入Excel表

这是我的class级

public class ExcelWrite {private Stream stream; 私人BinaryWriter作家;

private ushort[] clBegin = { 0x0809, 8, 0, 0x10, 0, 0 }; private ushort[] clEnd = { 0x0A, 00 }; private void WriteUshortArray(ushort[] value) { for (int i = 0; i < value.Length; i++) writer.Write(value[i]); } /// <summary> /// Initializes a new instance of the <see cref="ExcelWriter"/> class. /// </summary> /// <param name="stream">The stream.</param> public ExcelWrite(Stream stream) { this.stream = stream; writer = new BinaryWriter(stream); } public ExcelWrite() { } /// <summary> /// Writes the text cell value. /// </summary> /// <param name="row">The row.</param> /// <param name="col">The col.</param> /// <param name="value">The string value.</param> public void WriteCell(int row, int col, string value) { ushort[] clData = { 0x0204, 0, 0, 0, 0, 0 }; int iLen = value.Length; byte[] plainText = Encoding.ASCII.GetBytes(value); clData[1] = (ushort)(8 + iLen); clData[2] = (ushort)row; clData[3] = (ushort)col; clData[5] = (ushort)iLen; WriteUshortArray(clData); writer.Write(plainText); } /// <summary> /// Writes the integer cell value. /// </summary> /// <param name="row">The row number.</param> /// <param name="col">The column number.</param> /// <param name="value">The value.</param> public void WriteCell(int row, int col, int value) { ushort[] clData = { 0x027E, 10, 0, 0, 0 }; clData[2] = (ushort)row; clData[3] = (ushort)col; WriteUshortArray(clData); int iValue = (value << 2) | 2; writer.Write(iValue); } /// <summary> /// Writes the double cell value. /// </summary> /// <param name="row">The row number.</param> /// <param name="col">The column number.</param> /// <param name="value">The value.</param> public void WriteCell(int row, int col, double value) { ushort[] clData = { 0x0203, 14, 0, 0, 0 }; clData[2] = (ushort)row; clData[3] = (ushort)col; WriteUshortArray(clData); writer.Write(value); } /// <summary> /// Writes the empty cell. /// </summary> /// <param name="row">The row number.</param> /// <param name="col">The column number.</param> public void WriteCell(int row, int col) { ushort[] clData = { 0x0201, 6, 0, 0, 0x17 }; clData[2] = (ushort)row; clData[3] = (ushort)col; WriteUshortArray(clData); } /// <summary> /// Must be called once for creating XLS file header /// </summary> public void BeginWrite() { WriteUshortArray(clBegin); } /// <summary> /// Ends the writing operation, but do not close the stream /// </summary> public void EndWrite() { WriteUshortArray(clEnd); writer.Flush(); } public void exporttoExcel(DataTable table,string filename) { DataTable dt = new DataTable(); try { StringBuilder SB = new StringBuilder(); dt = table; if (dt.Rows.Count > 0) { FileStream stream = File.Open("C:/Application/" + filename + ".xls", FileMode.Create); ExcelWrite excelWriter = new ExcelWrite(stream); //AB_MISreports.Util.ExcelWrite excelWriter = new AB_MISreports.Util.ExcelWrite(stream); excelWriter.BeginWrite(); for (int i = 0; i < dt.Columns.Count; i++) { excelWriter.WriteCell(0, i, dt.Columns[i].ColumnName.ToString()); for (int j = 0; j < dt.Rows.Count; j++) { excelWriter.WriteCell(j + 1, i, dt.Rows[j][i].ToString()); } } excelWriter.EndWrite(); stream.Close(); HttpContext.Current.Response.ContentType = "application/vnd.xls"; HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".xls"); HttpContext.Current.Response.TransmitFile("C:/Application/" + filename + ".xls"); HttpContext.Current.Response.End(); HttpContext.Current.Response.Flush(); } } catch (Exception ex) { throw ex; } finally { dt.Dispose(); } } } 

这是官方的限制。 Excel 2007同时支持.xls和.xlsx格式文件,您确定您正在编写新的文件格式types吗? 这可能不是一个可行的select,但我们使用Aspose.Cells来处理电子表格创build。

Excel 2003 .xls – 65,536行
http://office.microsoft.com/en-gb/excel-help/excel-specifications-and-limits-HP005199291.aspx

Excel 2007 .xlsx – 1,048,576行
http://office.microsoft.com/en-gb/excel-help/excel-specifications-and-limits-HP010073849.aspx

Excel 2010 .xlsx – 1,058,576行
http://office.microsoft.com/en-gb/excel-help/excel-specifications-and-limits-HP010342495.aspx

请尝试将格式从“.xls”改为“.xlsx”FileStream stream = File.Open(“C:/ Application /”+ filename +“.xlsx”,FileMode.Create);