C#:
protected void Button1_Click(object sender, EventArgs e) { #region 建立虛擬表格 DataTable dt = new DataTable(); DataColumn column; column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "company_name"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "tel"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "fax"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "email"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "contact"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "company_address"; dt.Columns.Add(column); #endregion //輸出 ExcelFileStream(dt, @"D:\", "abc.xls"); }
private void ExcelFileStream(DataTable dt, string savepath, string filename) { try { Stream fs = RenderDataTableToExcel(dt); SaveStreamToFile(savepath + filename, fs); } catch (Exception) { throw; } }
public static Stream RenderDataTableToExcel(DataTable srcTable) { try { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(); HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0); foreach (DataColumn column in srcTable.Columns) { headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); } int rowIndex = 1; foreach (DataRow row in srcTable.Rows) { HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); foreach (DataColumn column in srcTable.Columns) { dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); } rowIndex++; } MemoryStream stream = new MemoryStream(); workbook.Write(stream); stream.Flush(); stream.Position = 0; sheet = null; headerRow = null; workbook = null; return stream; } catch (Exception) { throw; } }
public void SaveStreamToFile(string fileFullPath, Stream stream) { try { if (stream.Length == 0) return; // Create a FileStream object to write a stream to a file using (FileStream fileStream = System.IO.File.Create(fileFullPath, (int)stream.Length)) { // Fill the bytes[] array with the stream data byte[] bytesInStream = new byte[stream.Length]; stream.Read(bytesInStream, 0, (int)bytesInStream.Length); // Use FileStream object to write to the specified file fileStream.Write(bytesInStream, 0, bytesInStream.Length); } } catch (Exception) { throw; } }
沒有留言:
張貼留言