錯誤如下,煩高手指點一下


uj5u.com熱心網友回復:
看不出來,有時間的話樓主可以看看我之前寫的npio讀取,寫入excel的幾篇博客excel讀取:https://blog.csdn.net/yysyangyangyangshan/article/details/42614209
excel寫入:https://blog.csdn.net/yysyangyangyangshan/article/details/42837841
以及在網頁中寫入excel并提示保存至用戶指定路徑:
https://blog.csdn.net/yysyangyangyangshan/article/details/47904119
uj5u.com熱心網友回復:
感謝關注,您的帖子是用的xls. 我的是xlsx。好像不是一個型別檔案
uj5u.com熱心網友回復:
讀取 xls 和 xlsx 是使用兩個不同的 workuj5u.com熱心網友回復:
本人代碼class dt2excel
{
public static void DataTableToExcel(XSSFWorkbook workbook, XSSFSheet sheet,
DataTable dt, string strFileName, int startline, List<string> columns,List<string> columnsfixed)
{
using (var fileStream = new FileStream(strFileName, FileMode.OpenOrCreate))
{
///格式選項
ICellStyle cellStyle = workbook.CreateCellStyle();
IFont font = workbook.CreateFont();
font.FontName = "宋體";
font.FontHeightInPoints = 12;
cellStyle.DataFormat = 194;
cellStyle.SetFont(font);
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
cellStyle.VerticalAlignment = VerticalAlignment.Center;
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.WrapText = true;
sheet.GetRow(1).CreateCell(7).CellStyle = cellStyle;
sheet.GetRow(1).GetCell(7).SetCellValue(DateTime.Now.ToString("yyyy/MM/dd"));//標題
sheet.GetRow(2).CreateCell(7).CellStyle = cellStyle;
sheet.GetRow(2).GetCell(7).SetCellValue(dt.Rows.Count);
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
IRow newRow = sheet.CreateRow(i + 1 + startline);//row從第1行開始寫,并非第0行,第0行為title.
// IRow newRow = sheet.GetRow(i + 1 + startline);
for (int j = 0; j < columns.Count; j++)
{
int columnnr = int.Parse(OperateIniFile.ReadIniData("columns", columns[j], ""));
ICell cell = newRow.CreateCell(columnnr - 1);
cell.SetCellValue(dt.Rows[i][j] == null ? "" : dt.Rows[i][j].ToString());
//cell.SetCellValue(dt);
//cell.SetCellValue(float.Parse((dt.Rows[i][j]).ToString()));
cell.CellStyle = cellStyle;
}
for (int k = 0; k < columnsfixed.Count; k++)
{
int columnnr = int.Parse(OperateIniFile.ReadIniData("columnsfixed", columnsfixed[k], ""));
ICell cell = newRow.CreateCell(columnnr - 1);
cell.SetCellValue(columnsfixed[k]);
cell.CellStyle = cellStyle;
}
}
// IRow newRow = sheet.CreateRow(i + 1 + startline);//row從第1行開始寫,并非第0行,第0行為title.
// // IRow newRow = sheet.GetRow(i + 1 + startline);
//
//}
}
workbook.Write(fileStream);
workbook.Clear();
workbook.Close();
}
//return filePath;
}
/// 用模板匯出Excel
/// </summary>
/// <param name="table"></param>
/// <param name="strFileName">匯出路徑</param>
/// <param name="templetPath">模板路徑</param>
/// <param name="startRow">從第幾行開始寫資料,從1開始</param>
public static void ExportExcelByTemple(System.Data.DataTable dtSource,
string strFileName, string templetPath, int startRow, List<string> columns,List<string> columnsfixed)
{
try
{
XSSFWorkbook workbook = getWorkBook(templetPath);
XSSFSheet sheet = getSheet(workbook);
string outfile = strFileName;
DataTableToExcel(workbook, sheet, dtSource, strFileName, startRow,columns,columnsfixed);
//writeData(workbook,sheet, dtSource, strFileName, rowHeight, startRow);
//saveData(workbook, strFileName);
}
catch (Exception ex)
{
//LogInfo.Log(ex);
throw ex;
}
}
/// <summary>
/// 決議Excel模板,回傳WorkBook
/// </summary>
/// <param name="templetPath"></param>
/// <returns></returns>
private static XSSFWorkbook getWorkBook(string templetPath)
{
FileStream file = new FileStream(templetPath,
FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook = new XSSFWorkbook(file);
return workbook;
}
/// <summary>
/// 回傳Sheet
/// </summary>
/// <param name="workbook"></param>
/// <returns></returns>
private static XSSFSheet getSheet(XSSFWorkbook workbook)
{
return (XSSFSheet)workbook.GetSheetAt(0);
}
private static void saveData(XSSFWorkbook workbook, string strFileName)
{
//保存
using (MemoryStream ms = new MemoryStream())
{
using (FileStream fs = new FileStream(strFileName,FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
}
}
}
uj5u.com熱心網友回復:
果然我的代碼,用xls格式讀寫就沒有任何問題。用xlsx始終是有點問題uj5u.com熱心網友回復:
如果是 .NetCore專案,試下用DotNetCore.NPOIuj5u.com熱心網友回復:
net.frameworks
uj5u.com熱心網友回復:
我之前也遇到過,主要是樣式問題,你可以斷點看看應該有內部例外,但程式不會報錯。uj5u.com熱心網友回復:
哦。。。。是這樣嗎uj5u.com熱心網友回復:
我猜到多半也是,只是一直排查不出來,暫時就用xls了。
uj5u.com熱心網友回復:
https://www.cnblogs.com/imyzhou/p/10848936.htmluj5u.com熱心網友回復:
首先是npoi
uj5u.com熱心網友回復:
我用XLS確定無問題的。還有你檢查一下代碼。它們操作是獨立一個WORK里面的處理的。然后關閉。uj5u.com熱心網友回復:
版本或者excel檔案問題轉載請註明出處,本文鏈接:https://www.uj5u.com/net/3726.html
標籤:C#
