using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;
using NetLibrary.Data;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NetLibrary.ReportPrint;
namespace NetLibrary
{
public class MicrosoftExcel
{
#region 导出
public string ExportTXT(string Content)
{
try
{
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (Directory.Exists(DirectoryName) == false) Directory.CreateDirectory(DirectoryName);
string filename = Guid.NewGuid().ToString() + ".txt";
string filePath = DirectoryName + "/" + filename;
File.Create(filePath).Close();
FileInfo f = new FileInfo(filePath);
using (StreamWriter sw = new StreamWriter(filePath, false, System.Text.Encoding.UTF8))
{
sw.Write(Content);
sw.Close();
}
return "ServerCookies/" + filename;
}
catch
{
return "";
}
}
///
/// 导出Excel
///
/// 表头
/// DataTable
/// 要导出的列集合
///
public string Export(string HeaderName, DataTable tb)
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
HSSFRow dataRow = null;
HSSFCell dataCell = null;
int RowIndex = 0;
if (HeaderName != "")
{
dataRow = (HSSFRow)sheet.CreateRow(0);
dataCell = (HSSFCell)dataRow.CreateCell(0);
dataCell.SetCellValue(HeaderName);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
sheet.AddMergedRegion(new Region(0, 0, 0, tb.Columns.Count - 1));
RowIndex++;
}
//填充内容
for (int i = 0; i < tb.Rows.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + RowIndex);
foreach (DataColumn item in tb.Columns)
{
int j = tb.Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
dataCell.SetCellValue(tb.Rows[i][item.ColumnName].ToString());
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
for (int i = 0; i < tb.Columns.Count; i++)
{
sheet.AutoSizeColumn(i);
}
string filename = Guid.NewGuid().ToString() + ".xls";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
//保存
using (FileStream fs = new FileStream(ServerFileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
return "ServerCookies/" + filename;
}
public string Export(DataTable tb, ReportPrint.TableColumnCollection Columns)
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
//填充表头
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
//dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
//dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
//dataCell.CellStyle.BorderRight = CellBorderType.THIN;
//dataCell.CellStyle.BorderTop = CellBorderType.THIN;
////边框颜色
//dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
//dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
//dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
//dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < tb.Rows.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + 1);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns)
{
int j = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(tb.Rows[i][item.Name].ToString(), item.Format));
}
else
{
if (item.DataType == DbType.Decimal && tb.Rows[i][item.Name] != null && tb.Rows[i][item.Name].ToString() != "")
dataCell.SetCellValue(Convert.ToDouble(tb.Rows[i][item.Name]));
else if (item.DataType != DbType.Decimal)
dataCell.SetCellValue(tb.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
//dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
//dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
//dataCell.CellStyle.BorderRight = CellBorderType.THIN;
//dataCell.CellStyle.BorderTop = CellBorderType.THIN;
////边框颜色
//dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
//dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
//dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
//dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
string filename = Guid.NewGuid().ToString() + ".xls";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
//保存
using (FileStream fs = new FileStream(ServerFileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
return "ServerCookies/" + filename;
}
public string ExportTwo(DataTable tb, DataTable tb1, ReportPrint.TableColumnCollection Columns, ReportPrint.TableColumnCollection Columns1)
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
//填充表头
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < tb.Rows.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + 1);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns)
{
int j = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(tb.Rows[i][item.Name].ToString(), item.Format));
}
else
{
dataCell.SetCellValue(tb.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
HSSFSheet sheet1 = (HSSFSheet)workbook.CreateSheet("Sheet2");
sheet1.PrintSetup.FitHeight = 0;
sheet1.PrintSetup.FitWidth = 0;
sheet1.PrintSetup.Scale = 100;
//填充表头
HSSFRow dataRow1 = (HSSFRow)sheet1.CreateRow(0);
foreach (ReportPrint.TableColumn item in Columns1)
{
int index = Columns1.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow1.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < tb1.Rows.Count; i++)
{
dataRow1 = (HSSFRow)sheet1.CreateRow(i + 1);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns1)
{
int j = Columns1.IndexOf(item);
dataCell = (HSSFCell)dataRow1.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(tb1.Rows[i][item.Name].ToString(), item.Format));
}
else
{
dataCell.SetCellValue(tb1.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns1)
{
int index = Columns1.IndexOf(item);
if (item.Width > 0) { sheet1.SetColumnWidth(index, (int)item.Width); }
else { sheet1.AutoSizeColumn(index); }
}
string filename = Guid.NewGuid().ToString() + ".xls";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
//保存
using (FileStream fs = new FileStream(ServerFileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
return "ServerCookies/" + filename;
}
///
/// 2013-12-27
/// 石志超
///
public string Export(List lst, ReportPrint.TableColumnCollection Columns) where T : class
{
Type t = typeof(T);
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
//sheet.PrintSetup.PaperSize = 9;
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
//填充表头
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < lst.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + 1);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns)
{
int j = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(
DataConvert.Format(Convert.ToString(t.GetProperty(item.Name).GetValue(lst[i], null)), item.Format));
}
else if (item.DataType == DbType.Int32&& Convert.ToString(t.GetProperty(item.Name).GetValue(lst[i], null)) != "")
{
dataCell.SetCellValue(Convert.ToInt32(t.GetProperty(item.Name).GetValue(lst[i], null)));
}
else if (item.DataType == DbType.Decimal&& Convert.ToString(t.GetProperty(item.Name).GetValue(lst[i], null)) != "")
{
dataCell.SetCellValue(Convert.ToDouble(t.GetProperty(item.Name).GetValue(lst[i], null)));
}
else
{
dataCell.SetCellValue(Convert.ToString(t.GetProperty(item.Name).GetValue(lst[i], null)));
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
string filename = Guid.NewGuid().ToString() + ".xls";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
//保存
using (FileStream fs = new FileStream(ServerFileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
return "ServerCookies/" + filename;
}
///
/// 2014-01-26
/// 石志超
///
public string Export(string HeaderName, List lst, ReportPrint.TableColumnCollection Columns) where T : class
{
Type t = typeof(T);
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
//sheet.PrintSetup.PaperSize = 9;
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
HSSFRow dataRow = null;
int RowIndex = 0;
if (!string.IsNullOrEmpty(HeaderName))
{
dataRow = (HSSFRow)sheet.CreateRow(0);
HSSFCell dataCell = (HSSFCell)dataRow.CreateCell(0);
dataCell.SetCellValue(HeaderName);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
sheet.AddMergedRegion(new Region(0, 0, 0, Columns.Count - 1));
RowIndex++;
}
//填充表头
dataRow = (HSSFRow)sheet.CreateRow(RowIndex);
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
RowIndex++;
//填充内容
for (int i = 0; i < lst.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + RowIndex);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns)
{
int j = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(
DataConvert.Format(Convert.ToString(t.GetProperty(item.Name).GetValue(lst[i], null)), item.Format));
}
else
{
dataCell.SetCellValue(Convert.ToString(t.GetProperty(item.Name).GetValue(lst[i], null)));
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
string filename = Guid.NewGuid().ToString() + ".xls";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
//保存
using (FileStream fs = new FileStream(ServerFileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
return "ServerCookies/" + filename;
}
public string Export(DataTable dt1, ReportPrint.TableColumnCollection Columns1, DataTable dt2, ReportPrint.TableColumnCollection Columns2)
{
HSSFWorkbook workbook = new HSSFWorkbook();
DataTable tb = dt1;
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
//填充表头
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);
foreach (ReportPrint.TableColumn item in Columns1)
{
int index = Columns1.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < tb.Rows.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + 1);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns1)
{
int j = Columns1.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(tb.Rows[i][item.Name].ToString(), item.Format));
}
else
{
dataCell.SetCellValue(tb.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns1)
{
int index = Columns1.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
if (dt2 != null)
{
HSSFSheet sheet2 = (HSSFSheet)workbook.CreateSheet("Sheet2");
//填充表头
HSSFRow dataRow2 = (HSSFRow)sheet2.CreateRow(0);
foreach (ReportPrint.TableColumn item in Columns2)
{
int index = Columns2.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow2.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < dt2.Rows.Count; i++)
{
dataRow2 = (HSSFRow)sheet2.CreateRow(i + 1);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns2)
{
int j = Columns2.IndexOf(item);
dataCell = (HSSFCell)dataRow2.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(dt2.Rows[i][item.Name].ToString(), item.Format));
}
else
{
dataCell.SetCellValue(dt2.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns2)
{
int index = Columns2.IndexOf(item);
if (item.Width > 0) { sheet2.SetColumnWidth(index, (int)item.Width); }
else { sheet2.AutoSizeColumn(index); }
}
}
string filename = Guid.NewGuid().ToString() + ".xls";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
//保存
using (FileStream fs = new FileStream(ServerFileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
return "ServerCookies/" + filename;
}
public string Export(string HeaderName, DataTable tb, ReportPrint.TableColumnCollection Columns)
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
HSSFRow dataRow = null;
HSSFCell dataCell = null;
int RowIndex = 0;
if (HeaderName != "")
{
dataRow = (HSSFRow)sheet.CreateRow(0);
dataCell = (HSSFCell)dataRow.CreateCell(0);
dataCell.SetCellValue(HeaderName);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
sheet.AddMergedRegion(new Region(0, 0, 0, Columns.Count - 1));
RowIndex++;
}
//填充表头
dataRow = (HSSFRow)sheet.CreateRow(RowIndex);
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
RowIndex++;
//填充内容
for (int i = 0; i < tb.Rows.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + RowIndex);
foreach (ReportPrint.TableColumn item in Columns)
{
int j = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(tb.Rows[i][item.Name].ToString(), item.Format));
}
else
{
dataCell.SetCellValue(tb.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
string filename = Guid.NewGuid().ToString() + ".xls";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
//保存
using (FileStream fs = new FileStream(ServerFileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
return "ServerCookies/" + filename;
}
#endregion
#region 导出到指定文件
public void ExportFile(string FilePath, DataTable tb, ReportPrint.TableColumnCollection Columns)
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
//填充表头
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
HSSFCell dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < tb.Rows.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + 1);
HSSFCell dataCell = null;
foreach (ReportPrint.TableColumn item in Columns)
{
int j = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(tb.Rows[i][item.Name].ToString(), item.Format));
}
else
{
dataCell.SetCellValue(tb.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
//保存
using (FileStream fs = new FileStream(FilePath, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
workbook.Dispose();
}
#endregion
#region ConvertHSSFWorkbook
public HSSFWorkbook ConvertHSSFWorkbook(DataTable tb, ReportPrint.TableColumnCollection Columns, int StartRowIndex = 0)
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
sheet.PrintSetup.FitHeight = 0;
sheet.PrintSetup.FitWidth = 0;
sheet.PrintSetup.Scale = 100;
HSSFRow dataRow = null;
HSSFCell dataCell = null;
if (StartRowIndex > 0)
{
for (int i = 0; i < StartRowIndex; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i);
for (int j = 0; j < Columns.Count; j++)
{
dataRow.CreateCell(j).SetCellValue("");
}
}
}
//填充表头
dataRow = (HSSFRow)sheet.CreateRow(StartRowIndex);
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(index);
dataCell.SetCellValue(item.Caption);
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
//填充内容
for (int i = 0; i < tb.Rows.Count; i++)
{
dataRow = (HSSFRow)sheet.CreateRow(i + StartRowIndex + 1);
dataCell = null;
foreach (ReportPrint.TableColumn item in Columns)
{
int j = Columns.IndexOf(item);
dataCell = (HSSFCell)dataRow.CreateCell(j);
if (item.Format != "")
{
dataCell.SetCellValue(DataConvert.Format(tb.Rows[i][item.Name].ToString(), item.Format));
}
else
{
dataCell.SetCellValue(tb.Rows[i][item.Name].ToString());
}
dataCell.CellStyle.Alignment = HorizontalAlignment.CENTER;
//边框
dataCell.CellStyle.BorderBottom = CellBorderType.THIN;
dataCell.CellStyle.BorderLeft = CellBorderType.THIN;
dataCell.CellStyle.BorderRight = CellBorderType.THIN;
dataCell.CellStyle.BorderTop = CellBorderType.THIN;
//边框颜色
dataCell.CellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.LeftBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
dataCell.CellStyle.RightBorderColor = HSSFColor.OLIVE_GREEN.BLUE.BLACK.index;
}
}
foreach (ReportPrint.TableColumn item in Columns)
{
int index = Columns.IndexOf(item);
if (item.Width > 0) { sheet.SetColumnWidth(index, (int)item.Width); }
else { sheet.AutoSizeColumn(index); }
}
return workbook;
}
#endregion
///
///读取csv格式的Excel文件的方法
///
///待读取Excel的全路径
///
public DataTable GetdataFromCVS(string fileName)
{
DataTable dt = new DataTable();
StreamReader sr = new StreamReader(fileName, System.Text.Encoding.GetEncoding("GB2312"));
string strTitle = sr.ReadLine();
string[] strColumTitle = strTitle.Split(','); //CVS 文件默认以逗号隔开
for (int i = 0; i < strColumTitle.Length; i++)
{
dt.Columns.Add(strColumTitle[i].Replace("\"", "").Trim());
}
//string[] aryline;
while (!sr.EndOfStream)
{
string strTest = sr.ReadLine();
string[] strTestAttribute = strTest.Split(',');
DataRow dr = dt.NewRow();
for (int i = 0; i < strColumTitle.Length; i++)
{
dr[i] = strTestAttribute[i].Replace("=", "").Replace("\"", "").Replace("'", "").Trim();
}
dt.Rows.Add(dr);
}
return dt;
}
///
///读取csv格式的Excel文件的方法
///
///待读取Excel的全路径
///
public DataTable GetdataFromCVS2(string fileName)
{
DataTable dt = new DataTable();
StreamReader sr = new StreamReader(fileName, System.Text.Encoding.GetEncoding("GB2312"));
string strTitle = sr.ReadLine();
string[] strColumTitle = strTitle.Split(','); //CVS 文件默认以逗号隔开
for (int i = 0; i < strColumTitle.Length; i++)
{
dt.Columns.Add(strColumTitle[i].Replace("\"", "").Trim());
}
//string[] aryline;
while (!sr.EndOfStream)
{
string strTest = sr.ReadLine();
string[] strTestAttribute = strToAry(strTest);//请注意:此处变了strTest.Split(',');
DataRow dr = dt.NewRow();
for (int i = 0; i < strColumTitle.Length; i++)
{
dr[i] = strTestAttribute[i].Replace("=", "").Replace("\"\"", "\"").Trim();
}
dt.Rows.Add(dr);
}
return dt;
}
private static string[] strToAry(string strLine)
{
string strItem = "";
int iFenHao = 0;
System.Collections.ArrayList lstStr = new System.Collections.ArrayList();
for (int i = 0; i < strLine.Length; i++)
{
string strA = strLine.Substring(i, 1);
if (strA == "\"")
{
iFenHao = iFenHao + 1;
}
if (iFenHao == 2)
{
iFenHao = 0;
}
if (strA == "," && iFenHao == 0)
{ lstStr.Add(strItem); strItem = ""; }
else
{ strItem = strItem + strA; }
}
if (strItem.Length > 0)
lstStr.Add(strItem);
return (String[])lstStr.ToArray(typeof(string));
}
#region 写入CSV,附带路径方法
public string WriteCSV(bool hasHeader, DataTable dtOutputCSV, TableColumnCollection Columns, string _splitChar)
{
if (dtOutputCSV == null)
{
throw new ArgumentNullException("Argument(dtOutputCSV) is null!");
}
StringBuilder sb = new StringBuilder();
if (hasHeader)
{
foreach (ReportPrint.TableColumn item in Columns)
{
sb.Append("\"" + item.Caption + "\"");
sb.Append(",");
}
sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);
}
for (int i = 0; i < dtOutputCSV.Rows.Count; i++)
{
foreach (ReportPrint.TableColumn item in Columns)
{
for (int j = 0; j < dtOutputCSV.Columns.Count; j++)
{
string str = dtOutputCSV.Rows[i][j].ToString();
if (str.Contains(",") || str.Contains("\"") || str.Contains("\r") || str.Contains("\n")) //含逗号 冒号 换行符的需要放到引号中
{
str = string.Format("\"{0}\"", str);
}
if (dtOutputCSV.Columns[j].ColumnName == item.Name)
sb.Append("\"" + str + "\"" + ",");
}
}
sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);
}
string filename = Guid.NewGuid().ToString() + ".csv";
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
if (System.IO.Directory.Exists(DirectoryName) == false) System.IO.Directory.CreateDirectory(DirectoryName);
string ServerFileName = DirectoryName + "/" + filename;
using (TextWriter tw = new StreamWriter(ServerFileName, false))
{
tw.Write(sb.ToString());
tw.Flush();
tw.Close();
}
return "ServerCookies/" + filename;
}
#endregion
#region 导入
public DataTable ImportExcel(string fileName)
{
HSSFWorkbook hssfworkbook;
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
hssfworkbook = new HSSFWorkbook(file);
}
ISheet sheet = hssfworkbook.GetSheetAt(0);
IEnumerator rows = sheet.GetRowEnumerator();
DataTable dt = new DataTable();
IRow row;
rows.MoveNext();
row = (HSSFRow)rows.Current;
int len = row.LastCellNum;
for (int i = 0; i < len; i++)
{
ICell cell = row.GetCell(i);
if (cell != null)
{
dt.Columns.Add(cell.ToString().Trim());
}
}
while (rows.MoveNext())
{
row = (HSSFRow)rows.Current;
DataRow dr = dt.NewRow();
for (int i = 0; i < len; i++)
{
ICell cell = row.GetCell(i);
if (cell == null)
{
dr[i] = null;
}
else
{
//读取Excel格式,根据格式读取数据类型
switch (cell.CellType)
{
case CellType.BLANK: //空数据类型处理
dr[i] = "";
break;
case CellType.STRING: //字符串类型
dr[i] = cell.StringCellValue;
break;
case CellType.NUMERIC: //数字类型
if (DateUtil.IsCellDateFormatted(cell))//日期类型
{
dr[i] = cell.DateCellValue;
}
else//其他数字类型
{
dr[i] = cell.NumericCellValue;
}
break;
case CellType.FORMULA:
HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(hssfworkbook);
dr[i] = e.Evaluate(cell).StringValue;
break;
default:
dr[i] = "";
break;
}
//if (cell.CellType == CellType.FORMULA || cell.CellType == CellType.NUMERIC)
//{
// dr[i] = cell.DateCellValue;
//}
//else
//{
// dr[i] = cell.ToString().Trim();
//}
}
}
dt.Rows.Add(dr);
}
return dt;
}
#endregion
#region 导入
public DataTable ImportExcel2(string fileName)
{
HSSFWorkbook hssfworkbook;
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
hssfworkbook = new HSSFWorkbook(file);
}
ISheet sheet = hssfworkbook.GetSheetAt(0);
IEnumerator rows = sheet.GetRowEnumerator();
DataTable dt = new DataTable();
IRow row;
rows.MoveNext();
row = (HSSFRow)rows.Current;
int len = row.LastCellNum;
for (int i = 0; i < len; i++)
{
ICell cell = row.GetCell(i);
if (cell != null)
{
dt.Columns.Add(cell.ToString().Trim()+i.ToString());
}
}
while (rows.MoveNext())
{
row = (HSSFRow)rows.Current;
DataRow dr = dt.NewRow();
for (int i = 0; i < len; i++)
{
ICell cell = row.GetCell(i);
if (cell == null)
{
dr[i] = null;
}
else
{
//读取Excel格式,根据格式读取数据类型
switch (cell.CellType)
{
case CellType.BLANK: //空数据类型处理
dr[i] = "";
break;
case CellType.STRING: //字符串类型
dr[i] = cell.StringCellValue;
break;
case CellType.NUMERIC: //数字类型
if (DateUtil.IsCellDateFormatted(cell))//日期类型
{
dr[i] = cell.DateCellValue;
}
else//其他数字类型
{
dr[i] = cell.NumericCellValue;
}
break;
case CellType.FORMULA:
HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(hssfworkbook);
dr[i] = e.Evaluate(cell).StringValue;
break;
default:
dr[i] = "";
break;
}
//if (cell.CellType == CellType.FORMULA || cell.CellType == CellType.NUMERIC)
//{
// dr[i] = cell.DateCellValue;
//}
//else
//{
// dr[i] = cell.ToString().Trim();
//}
}
}
dt.Rows.Add(dr);
}
return dt;
}
#endregion
///
/// 解析Excel
///
///
///
///
public DataSet LoadDataFromExcel(string filePath, string name)
{
try
{
string strConn;
// strConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties=Excel 8.0";
strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
string sql = "SELECT * FROM [" + name + "$]";//可是更改Sheet名称,比如sheet2,等等
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, name);
OleConn.Close();
return OleDsExcle;
}
catch (Exception err)
{
//MessageBox.Show("数据绑定Excel失败! 失败原因:" + err.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return null;
}
}
}
}