if (startRow < 0) startRow = 0;//行如果小于0,默認設定為0
var wb = new XSSFWorkbook();//使用這個物件來創建作業簿 變數
var sheet = wb.CreateSheet(sheetName);//使用這個物件來創建作業表 變數
//定義單元格
ICell cell;
int j;
var maxLength = 0;//最大行數
int curLenth;//當前行
object columnValue;//列的值
var dt = dt2.Tables[0];//dt變數,用來存盤匯入的資料
var row = sheet.CreateRow(0);//創建表頭
row.HeightInPoints = 25;//行的高度
sheet.SetColumnWidth(0, 10 * 256);//列寬設定了沒用
for (int i = 0; i < dt.Columns.Count; i++)//遍歷要匯入的資料
{
columnValue = dt.Columns[i].ColumnName;//設定遍歷到的列 列名
curLenth = Encoding.Default.GetByteCount(columnValue.ToString());//對列 名進行編碼
maxLength = (maxLength < curLenth ? curLenth : maxLength);//指定最大長度,如果最大長度小于當前長度,那么回傳當前長度,否則回傳最大的
var columnWidth = 256 * maxLength;//設定列的寬度
sheet.SetColumnWidth(i, columnWidth);//設定寬度
cell = row.CreateCell(i);//為列創建單元格
cell.SetCellValue(columnValue.ToString()); //設定單元格的內容,就是讀取到的列的名稱
}
//填充每一行資料
for (var i = startRow; i < dt2.Tables[0].Rows.Count; i++)
{
var dr = dt2.Tables[0].Rows[i];
row = sheet.CreateRow(i + 1);
for (j = 0; j < dt.Columns.Count; j++)
{
columnValue = dr[j];
curLenth = Encoding.Default.GetByteCount(columnValue.ToString());//對列 名進行編碼
maxLength = (maxLength < curLenth ? curLenth : maxLength);//指定最大長度,如果最大長度小于當前長度,那么回傳當前長度,否則回傳最大的
var columnWidth = 256 * maxLength;//設定列的寬度
sheet.SetColumnWidth(j, columnWidth);//設定寬度
cell = row.CreateCell(j);//為列創建單元格
cell.SetCellValue(columnValue.ToString()); //設定單元格的內容,就是讀取到的列的名稱
}
}
//創建一個資料流物件 指定保存檔案的名稱,如果沒有的話,可以創建
using (var fs = new System.IO.FileStream(saveFileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
wb.Write(fs);//使用作業簿進行寫入
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/262287.html
標籤:C#
下一篇:WPF獲取所有視窗時出現問題
