c#(winform,webform通用)利用npoi將xls文件復制為xlsx文件(excel的修改,保存,包括excel2003-office2007+的處理)


1.程序界面

   每次需要處理excel文件的時候,都是去百度找方案,真是氣一頭火,今天好好總結一下,下次就不用度娘了。

   我是用winform來試驗的,因為winform比較方便測試,實際上只要是在.net平台上,c#寫的程序,都是通用的。

   

 

2.所需dll下載地址

npoi.zip  這里包含了所有所需要的dll文件,引入到項目中就可以了

 

3.代碼

   public void writeExcel(string readExcelPath, string writeExcelPath)
        {
            //需要讀取的excel信息
            FileStream file = new FileStream(readExcelPath, FileMode.Open, FileAccess.Read); HSSFWorkbook book = new HSSFWorkbook(file); HSSFSheet sheet = (HSSFSheet)book.GetSheetAt(0); //需要寫入的excel信息 XSSFWorkbook是處理xlsx即excel2007+以上文件的 FileStream writeFile = new FileStream(writeExcelPath, FileMode.Open, FileAccess.Read); XSSFWorkbook writeBook = new XSSFWorkbook(writeFile); XSSFSheet writeSheet = (XSSFSheet)writeBook.GetSheetAt(0); for (int i = 0; i < sheet.LastRowNum + 1; i++) {
//獲取第i行,得到對象 IRow row = sheet.GetRow(i);
//新建第i行,並返回得到的對象 IRow writeRow = writeSheet.CreateRow(i); for (int j = 0; j < row.LastCellNum+1; j++) { ICell cell = row.GetCell(j); if (cell == null) { break; }
//這句話是設置單元格類型為string類型,否則如果單元格內容為numeric的話,會拋出異常 row.GetCell(j).SetCellType(CellType.STRING); string readValue = sheet.GetRow(i).GetCell(j).StringCellValue; if (string.IsNullOrEmpty(readValue)) { continue; } //新建第i行,第j列 writeRow.CreateCell(j); writeSheet.GetRow(i).GetCell(j).SetCellValue(readValue); textBox3.Text += readValue; } }
//保存的地址,我做了處理,不讓他保存在我選擇的地址上,實際上不處理的話也沒有問題 string savePath = textBox2.Text.Replace(".xlsx","_bak.xlsx"); FileStream saveFile = new FileStream(savePath, FileMode.Create);
//將處理后的文件保存到新文件中去 writeBook.Write(saveFile); saveFile.Close(); file.Close(); MessageBox.Show("處理excel完畢"); }

 

3.注意事項 

①HSSFWorkbook ,HSSFSheet是處理excel2003的,XSSFWorkbook,XSSFSheet是處理excel2007+的,切忌,一定不能少引用文件 
② IRow writeRow = writeSheet.CreateRow(i);這句話要放在第一層循環外面,要把IRow單獨拿出來作為一個變量,然后在內層循環能調用,不然的話,會導致只復制到最后一列
 
        

 

 

 

 

 

 

 

 

 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM