Я использую Oracle.ManagedDataAccess. Я попытался вывести все значения в XML, и это сработало. Тем не менее, теперь у меня возникает проблема с записью этих значений в файл excel с использованием библиотеки NPOI.NullReferenceException доступ к ячейкам рабочей книги с NPOI
Я написал webservice, который берет данные из базы данных и записывает их в файл excel.
Я получаю ошибку при присвоении значения из таблицы базы данных ячейке Excel.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.IO;
using System.Data;
using System.Configuration;
using System.Configuration.Assemblies;
using Oracle.ManagedDataAccess;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
using NPOI;
using NPOI.XSSF.UserModel;
namespace Example
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class WebService2 : System.Web.Services.WebService
{
[WebMethod]
public string dictToExcel(string dict_name)
{
string connectionString = ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
OracleConnection connection = new OracleConnection(connectionString);
connection.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = connection;
cmd.CommandText = "SELECT * from TB_EXAMPLE";
cmd.CommandType = CommandType.Text;
OracleDataReader dataReader = cmd.ExecuteReader();
using (FileStream stream = new FileStream(@"filepath\new.xlsx", FileMode.Create, FileAccess.Write))
{
XSSFWorkbook wb;
XSSFSheet sh;
wb = new XSSFWorkbook();
sh = (XSSFSheet)wb.CreateSheet("Report1");
while (dataReader.Read())
{
for (int i = 0; i < 2; i++)
{
var r = sh.CreateRow(i);
for (int j = 0; j < 2; j++)
{
wb.GetSheet("Report1").GetRow(i).GetCell(j).SetCellValue(dataReader.GetValue(j).ToString());
}
}
wb.Write(stream);
}
}
return "Done!";
connection.Close();
}
}
}
Я получаю эту ошибку:
System.NullReferenceException: Object reference not set to an instance of an object.
на этой части кода:
wb.GetSheet("Report1").GetRow(i).GetCell(j).SetCellValue(dataReader.GetValue(j).ToString());
Возможный дубликат [Что такое NullReferenceException, и как это исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do- i-fix-it) – mybirthname
@mybirthname Я не вижу там намеков. Можете ли вы уточнить? – TheOneAndOnlyNoobofCSharp
Используйте debug и проверьте, что такое null – mybirthname