--------------------------------------以下异常处理-------------------------------------
一、数据库中数据类型不同、为空时处理(这个问题我在第三章强调过,设置默认值)
数据库数据
导出处理
private void button1_Click(object sender, EventArgs e)
{
//1、通过ADO.NET读取数据
string strSql = "SELECT * FROM userInfo";
SqlDataReader reader = sqlHelper.ExecuteReader(strSql,CommandType.Text);
if (reader.HasRows)
{
//------创建文件开始------
string filePath = ""; //要导出的文件路径
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Filter = "Excel文件|*.xls";
saveFile.DefaultExt = "xls";
saveFile.FileName = "学生表";
DialogResult dResult= saveFile.ShowDialog(); //获取用户点击的按钮 保存/取消
filePath = saveFile.FileName; //获取导出路径
//------创建文件结果------
if (dResult == DialogResult.Cancel) //用户点击的按钮
{
MessageBox.Show("取消导出!");
return;
}
//创建工作簿
IWorkbook workBook = new HSSFWorkbook();
//创建工作表
ISheet sheet = workBook.CreateSheet("学生表"); // 设置工作表名称
#region 创建第一行,设置列名
//------------------------------------------------------------
//创建第一行,第一行表示列名
//循环查询出每一列
IRow rowHead = sheet.CreateRow(0);
for (int col = 0; col < reader.FieldCount; col++)
{
rowHead.CreateCell(col).SetCellValue(reader.GetName(col)); //获取当前列的名字:reader.GetName(col)
}
//------------------------------------------------------------
#endregion
int rIndex = 1; //为什么行的索引为1呢,因为没有列名
while (reader.Read())
{
IRow currentRow = sheet.CreateRow(rIndex); //创建行
int id = reader.GetInt32(0);
string user_id = reader.GetString(1);
string user_pwd = reader.GetString(2);
string user_name = reader.GetString(3);
DateTime? dTime = reader.IsDBNull(4) ? null : (