实现过程:
要导出来的数据库数据量很大,一次取出来压力有点大,故分批取出来,导入到同一个Excel。
因为Excel2003版最大行数是65536行,Excel2007开始的版本最大行数是1048576行,故NPOI导出时候选择了Excel2007。
要导出来的数据库数据量很大,一次取出来压力有点大,故分批取出来,导入到同一个Excel。
因为Excel2003版最大行数是65536行,Excel2007开始的版本最大行数是1048576行,故NPOI导出时候选择了Excel2007。
Form1.cs
/*
引用命名空间:
using System.IO;
using System.Threading.Tasks;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
*/
public Form1()
{
InitializeComponent();
List<DictionaryEntry> list = new List<DictionaryEntry>(){
new DictionaryEntry(1, "XA"),
new DictionaryEntry(2, "XB")
};
cbType.BindComboBox(list);
}
private void CreateExcel(string fileName)
{
if (File.Exists(fileName))
File.Delete(fileName);
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
FileStream sw = File.Create(fileName);
workbook.Write(sw);
sw.Close();
}
private void btnExport_Click(object sender, EventArgs e)
{
try
{
Task.Factory.StartNew(() =>
{
txtSql.SafeCall(() =>
{
txtSql.AppendText("开始处理...\r\n");
});
BusinessType businessType = GetBusinessType();
string[] sqlWhereArray = Sql.SqlWhereArray;
string[] DateRemarkArray = Sql.DateRemarkArray;
string fileName = string.Format("{0}.xlsx", businessType.ToString());
CreateExcel(fileName);
string sqlCount = Sql.GetRecordSql(businessType, "");
int recordCount = db.ExecuteScalar(sqlCount);
int sqlIndex = 0;
int rowIndex = 0;
foreach (string sqlWhre