WPF引用NPOI类库方式导出EXCEL方法!!
效果如图
解决办法
public static string TableExcel(DataTable dt)
{
//bool result = false;
IWorkbook workbook = null;
FileStream fs = null;
IRow row = null;
ISheet sheet = null;
ICell cell = null;
try
{
if (dt != null && dt.Rows.Count > 0)
{
workbook = new XSSFWorkbook();
sheet = workbook.CreateSheet("Sheet1");//创建一个名称为Sheet0的表
sheet1 = workbook.CreateSheet("汇总");//创建一个名称为Sheet0的表
XSSFCellStyle cellStyle = (XSSFCellStyle)workbook.CreateCellStyle(); //创建列头样式
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; //水平居中
cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
int rowCount = dt.Rows.Count;//行数
int columnCount = dt.Columns.Count;//列数
string data = DateTime.Now.ToString("yyyyMMddHHmmss");
//设置列头
row = sheet.CreateRow(0);//excel第一行设为列头
row1 = sheet1.CreateRow(0);//excel第一行设为列头
//int da = dt.Columns[1].MaxLength;
//sheet.DefaultColumnWidth = 20;
//sheet.SetColumnWidth(0,20*256);
//sheet.SetColumnWidth(1, 15 * 256);
//sheet.SetColumnWidth(2, 30 * 256);
for (int c = 0; c < columnCount; c++)
{
//cell = row.CreateCell(c);
cell = row.CreateCell(c);
cell.CellStyle = cellStyle;
sheet.AutoSizeColumn(c);
//cell.SetCellValue(dt.Columns[c].ColumnName);
if (c == 0)
{
cell.SetCellValue("包裹条码");
}
else if (c == 1)
{
cell.SetCellValue("格口号");
}
else if (c == 2)
{
cell.SetCellValue("状态");
}
else if (c == 3)
{
cell.SetCellValue("时间");
}
}
for (int columnNum = 1; columnNum < dt.Columns.Count; columnNum++)
{
int columnWidth = sheet.GetColumnWidth(columnNum) / 256;
cell = row.GetCell(columnNum);
int length = Encoding.Default.GetBytes(cell.ToString()).Length;
if (columnWidth < length)
{
columnWidth = length + 5;
}
sheet.SetColumnWidth(columnNum, columnWidth * 256);
for (int i = 0; i < rowCount; i++)
{
row = sheet.CreateRow(i + 1);
for (int j = 0; j < columnCount; j++)
{
cell = row.CreateCell(j);//excel第二行开始写入数据
cell.CellStyle = cellStyle;
//if (j == 0)
//{
// cell.SetCellValue(i + 1);
// num = i + 1;
//}
//else if (j == 5)
//{
// cell.SetCellValue(Convert.ToInt32(dt.Rows[i][j]));
//}
//else
//{
// cell.SetCellValue(dt.Rows[i][j].ToString());
//}
if (j == 0)
{
cell.SetCellValue(dt.Rows[i][1].ToString());
}
else if(j == 1)
{
cell.SetCellValue(dt.Rows[i][2].ToString());
}
else if (j == 2)
{
cell.SetCellValue(dt.Rows[i][3].ToString());
}
else if (j == 3)
{
cell.SetCellValue(dt.Rows[i][4].ToString());
}
else if (j == 4)
{
cell.SetCellValue(dt.Rows[i][5].ToString());
}
}
}
}
string paths = "";
System.Windows.Forms.SaveFileDialog saveFile = new System.Windows.Forms.SaveFileDialog();
saveFile.Filter = "Excel files(*.xlsx)|*.xlsx";
if (saveFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
paths = saveFile.FileName;
}
using (fs = File.OpenWrite(paths))
{
workbook.Write(fs);//向打开的这个xls文件中写入数据
System.Windows.Forms.DialogResult result = System.Windows.Forms.MessageBox.Show("EXCEL文件保存成功!");
}
return "ok";
}
else
{
return "no";
}
}
catch (Exception ex)
{
if (fs != null)
{
fs.Close();
}
return ex.Message;
}
}
这样就解决了。
看完如果对你有帮助,感谢点赞支持!
如果可以看到右下角的 “一键三连” 按钮了,嘻嘻