日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

npoi 执行公式_生成excel文件时NPOI无法计算公式

發布時間:2024/9/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 npoi 执行公式_生成excel文件时NPOI无法计算公式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NPOI庫

. 已創建Excel文件,但未計算公式。這是我第一次使用NPOI庫。

經過大量的谷歌搜索,我發現了一些代碼片段,我用在我的代碼計算公式,但仍然沒有運氣。

此例程使用隨機數值和動態組合的公式填充數據表。我的數據表屏幕截圖附在這里

data table screen shot

public DataTable GetDataTable()

{

string strSum = "", strColName, strImmediateOneUp = "", strImmediateTwoUp = "";

int startsum = 0;

int currow = 0;

bool firstTimeSum = true;

int NumRows = 6;

int NumColumns = 5;

DataTable dt = new DataTable();

for (int col = 0; col < NumColumns; col++)

{

strColName = GenerateColumnText(col);

DataColumn datacol = new DataColumn(strColName, typeof(object));

dt.Columns.Add(datacol);

}

for (int row = 0; row < NumRows; row++)

{

dt.Rows.Add();

for (int col = 0; col < NumColumns; col++)

{

if (row < 2)

{

dt.Rows[row][col] = Convert.ToInt32(new Random().Next(1, NumRows));

}

else

{

if (firstTimeSum)

{

if (row - currow == 2)

{

currow = row;

startsum = 0;

firstTimeSum = false;

}

else

{

startsum = 1;

}

}

else

{

if (row - currow == 3)

{

currow = row;

startsum = 0;

}

}

if (startsum == 0)

{

strColName = GenerateColumnText(col);

strImmediateOneUp = strColName + ((row + 1) - 1).ToString();

strImmediateTwoUp = strColName + ((row + 1) - 2).ToString();

strSum = string.Format("=SUM({0}:{1})", strImmediateTwoUp, strImmediateOneUp);

dt.Rows[row][col] = strSum;

}

else

{

dt.Rows[row][col] = Convert.ToInt32(new Random().Next(1, NumRows));

}

}

}

startsum = 1;

}

return dt;

}

public int DataTableToExcel(DataTable data, string sheetName, bool isColumnWritten)

{

int i = 0;

int j = 0;

int count = 0;

ISheet sheet = null;

IWorkbook workbook=null;

double d;

string fileName = @"d:\SpreadsheetLight_npoi.xlsx";

FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);

if (fileName.IndexOf(".xlsx") > 0) // 2007

workbook = new XSSFWorkbook();

else if (fileName.IndexOf(".xls") > 0) // 2003

workbook = new HSSFWorkbook();

try

{

if (workbook != null)

{

sheet = workbook.CreateSheet(sheetName);

}

else

{

return -1;

}

if (isColumnWritten == true)

{

IRow row = sheet.CreateRow(0);

for (j = 0; j < data.Columns.Count; ++j)

{

row.CreateCell(j).SetCellValue(data.Columns[j].ColumnName);

}

count = 1;

}

else

{

count = 0;

}

for (i = 0; i < data.Rows.Count; ++i)

{

IRow row = sheet.CreateRow(count);

for (j = 0; j < data.Columns.Count; ++j)

{

if (Double.TryParse(data.Rows[i][j].ToString(), out d))

{

row.CreateCell(j).SetCellValue(d);

//row.CreateCell(j).CellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");

}

else

{

row.CreateCell(j).SetCellValue(data.Rows[i][j].ToString().Replace("=",string.Empty));

//row.CreateCell(j).SetCellFormula(data.Rows[i][j].ToString().Replace("=",string.Empty));

}

}

++count;

}

if (workbook is XSSFWorkbook)

{

XSSFFormulaEvaluator.EvaluateAllFormulaCells(workbook);

}

else

{

HSSFFormulaEvaluator.EvaluateAllFormulaCells(workbook);

}

workbook.Write(fs);

return count;

}

catch (Exception ex)

{

Console.WriteLine("Exception: " + ex.Message);

return -1;

}

}

我用這種方法計算我的公式,但仍然不起作用。

if (workbook is XSSFWorkbook)

{

XSSFFormulaEvaluator.EvaluateAllFormulaCells(workbook);

}

else

{

HSSFFormulaEvaluator.EvaluateAllFormulaCells(workbook);

}

請告訴我在我的代碼中添加或更改什么,結果公式應該被計算,當我打開excel文件時將顯示正確的值。謝謝

總結

以上是生活随笔為你收集整理的npoi 执行公式_生成excel文件时NPOI无法计算公式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。