try
{
Microsoft.Office.Interop.Excel.Application ThisApplication = new Microsoft.Office.Interop.Excel.Application();
var ThisWorkbook = ThisApplication.Workbooks.Open(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
ThisApplication.DisplayAlerts = false;
var xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)ThisWorkbook.Worksheets["sheet1"];
Microsoft.Office.Interop.Excel.Range range = xlSheet.get_Range("P1", Type.Missing);
Microsoft.Office.Interop.Excel.Range range1 = xlSheet.get_Range("C6", Type.Missing);
range.Copy(range1);
ThisWorkbook.Save();//.SaveAs(filePath, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,Type.Missing, Type.Missing, Type.Missing, Type.Missing);
ThisWorkbook.Close();
if (ThisWorkbook != null)
{
ThisWorkbook.Close(true, Type.Missing, Type.Missing);
ThisWorkbook = null;
}
if (ThisApplication != null)
{
ThisApplication.Quit();
KillSpecialExcel(ThisApplication);
ThisApplication = null;
}
}
catch(Exception ex)
{
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
//IWorkbook workbook = null;// new HSSFWorkbook();// 创建一个Excel文件
// ISheet sheet = null;// workbook.CreateSheet() as HSSFSheet;// 创建一个Excel的Sheet
// //var a = new HSSFRichTextString("þ主要负责人");
// IRichTextString a = null;
// FileStream fs = null;
// ICell cell = null;
// using (fs = System.IO.File.OpenRead(filePath))
// {
// // 2007版本
// if (filePath.IndexOf(".xlsx") > 0)
// {
// workbook = new XSSFWorkbook(fs);
// a = new XSSFRichTextString("þ主要负责人");
// }
// // 2003版本
// else if (filePath.IndexOf(".xls") > 0)
// {
// workbook = new HSSFWorkbook(fs);
// a = new HSSFRichTextString("þ主要负责人");
// }
// if (workbook != null)
// {
// sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet
// if (sheet != null)
// {
// var font1 = (HSSFFont)sheet.Workbook.CreateFont();
// font1.FontName = "Wingdings 2";
// font1.FontHeightInPoints = 14;
// a.ApplyFont(0, 1, font1);
// cell = sheet.GetRow(1).GetCell(16);
// Microsoft.Office.Interop.Excel.Range rang = sheet.get_Range("A1", "F7");
// sheet.GetRow(5).GetCell(3).SetCellValue(a);
// sheet.GetRow(5).GetCell(3).SetCellValue(a);
// sheet.GetRow(6).GetCell(3).SetCellValue(cell.RichStringCellValue);
// sheet.GetRow(7).GetCell(3).SetCellValue(cell.RichStringCellValue);
// sheet.GetRow(8).GetCell(3).SetCellValue(cell.RichStringCellValue);
// sheet.GetRow(9).GetCell(3).SetCellValue(cell.RichStringCellValue);
// }
// }
// }
// using (fs = System.IO.File.OpenWrite(filePath))
// {
// workbook.Write(fs);//向打开的这个xls文件中写入数据
// }
}
#region DllImport Methods
[System.Runtime.InteropServices.DllImport("User32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
#endregion
public static void KillSpecialExcel(Microsoft.Office.Interop.Excel.Application m_objExcel)
{
try
{
if (m_objExcel != null)
{
int lpdwProcessId;
GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId);
System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
}
}
catch (Exception)
{ }
}
public ActionResult Approve(string keyvalue)
{
var res = app.Approve(keyvalue);
if (res)
{
return Success("批准成功");
}
return Error("批准失败!请确认状态是否正确");
}
}
}
以下为进行研发EXCEL操作时进行的相关测试代码,记录如下。private void test(string filePath) { try { Microsoft.Office.Interop.Excel.Application ThisApplication = new Mic...
The interface is prepared for N
POI
2.0 actually. In N
POI
2.0, there are two namespace: XSSF and HSSF. XSSF is for xlsx, HSSF is for xls. Both implements interfaces in N
POI
.SS;
N
POI
有3种dll:①XSSF
操作
xlsx格式版本的
Excel
;②HSSF
操作
xls格式版本的
Excel
;③SS以上两种格式的
Excel
都可
操作
;
下面的方式
string TempletFileName = @"D:\template.xls";
File.Copy(TempletFileName, targetPath, true);
HSSFWorkbook wk = null;
using (FileStream fs = File.Open(targetPath, FileMode.Open...
1.根据Visual Studio版本安装NuGet.Tools
网址:https://www.nuget.org/downloads
2.工具→NuGet包管理器→程序包管理器控制台
3.输入"Install-P
跨工作薄
复制
Sheet,并不是单纯的将Sheet的数据
复制
到新Sheet中,需要将数据、公式等包括数据格式(DataFormat),
单元格
的风格(CellStyle)等等都
复制
到新Sheet中。
N
POI
目前的版本为2.5.1,其
Excel
处理已经可以较好的支持XSSF(2007及以上)与HSSF(2003及以下)各自的工作薄间的Sheet拷贝,但XSSF工作薄与HSSF工作薄间的Sheet拷贝仍未实现。而2.4.1版的HSSF的Sheet拷贝也并未完善,虽然大部分功能已实现,颜色上有异常,2.5.1版已
C#
N
POI
一、N
POI
的引用二、
操作
Excel
1.创建新的
Excel
工作簿2.读取现有的
Excel
工作簿3.
操作
sheet工作表4.
操作
workbook工作簿5.跨workbook工作簿
复制
sheet工作表
编辑器:Visual Studio
语言:
C#
一、N
POI
的引用
1.根据Visual Studio版本安装NuGet.Tools
网址:https://www.nuget.org/downloads
2.工具→NuGet包管理器→程序包管理器控制台
3.输入"Install-Package N
N
POI
已经发布到了2.0的版本,可喜的是该版本支持到了
Excel
2007,但缺憾的是没有
复制
SHEET表的功能,只有一个CloneSheet方法,确实没明白怎么使用。所以在网上搜索了一下,只找一个JAVA的版本,好像也是自己写的代码实现的。于是拿过来翻译了一下,
复制
SHEET后的格式基本没变,但
单元格
的宽度没有实现,ICell接口没有类似于Width的属性,只好作罢。
哪位如果知道CloneS