2012-06-23 4 views
2

Я создал защищенный паролем zip-файл с файлом xls с помощью этого http://java.sys-con.com/node/1258827.Защищенный паролем файл xls/xlsx в java

Мой вопрос: есть ли java api, который создаст защищенный паролем файл xls вместо zip-файла. Я хочу напрямую применить пароль к файлу xls.Encryption/Decryption - это опция, но вы хотите запросить, когда при двойном нажатии на файл.

редактировать: Я получил эту
HSSFSheet.protectSheet("xyz"); но это только делает лист только для чтения.

Даже я пробовал это hssfworkbook.writeProtectWorkbook("abc", "abc");, но не запрашивал пароль.

Edit1: Существует метод в org.apache.poi.hssf.record.crypto.Biff8EncryptionKey пакете, чтобы открыть защищенный паролем файл Excel org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password); Есть ли какой-нибудь способ, чтобы установить пароль на незащищенные первенствует файл?

Edit2: Я попытался JExcel API

Workbook w=Workbook.getWorkbook(new File("c:\\employees22533.xls"));
Sheet ws=null;
ws=w.getSheet("Employee List");
SheetSettings sh=ws.getSettings();
sh.setPassword("abc");

Но это не настройка любого пароля

+1

У меня не было ответа. – happy

+0

POI не может этого сделать: http://apache-poi.1045710.n5.nabble.com/Excel-file-protection-using-Apache-POI-td5131471.html Используйте одну из других библиотек Java, упомянутых в ответах связанный возможный дубликат. – orangepips

ответ

2

Я лично использовал JExcelApi, но я не помню, что видел что-то о защите пароля в нем. Насколько JExcelApi обеспокоен есть ряд особенностей, в которых ответ, как известно, «Нет»:

  • Сводные таблицы
  • выпадающие списки
  • Rich Text в клетках
  • Установить повторяющиеся строки
  • Защита паролем

Я лично считаю, что если Passwor d Защита была бы возможна (с открытым исходным кодом api's) Их было бы много учебников, доступных в Интернете, и вы могли бы искать их просто быстрым поиском Google. К сожалению, ни один из свободно доступных API таблиц электронной таблицы, похоже, не поддерживает запись в зашифрованном виде электронные таблицы.

Однако если вы готовы использовать коммерческий API/библиотеку, то см this

0

Вы можете сделать это с помощью JACOB. Вот код без защиты файла temp.xsl для защищенного файла temptest.xsl. Вам необходимо иметь jacob.jar и jacob-XX-XX.dll в вашем классеpath

package test; 

import com.jacob.activeX.ActiveXComponent; 
import com.jacob.com.Dispatch; 
import com.jacob.com.Variant; 

public class excel 
{ 
private ActiveXComponent excelApp = null; 
public excel() 
{ 
String xlsFile = "D:\\temp.xls"; 
excelApp = new ActiveXComponent("Excel.Application"); 
excelApp.setProperty("Visible", new Variant(false)); 
Object workbooks = excelApp.getProperty("Workbooks").toDispatch(); 
Object workbook = Dispatch.invoke((Dispatch) workbooks,"Open",Dispatch.Method,new Object[] {xlsFile, new Variant(false),new Variant(true) }, new int[1]).toDispatch();   

Dispatch.call((Dispatch)workbook, "SaveAs", new Variant("D:\\temptest.xls"),new Variant("1"),new Variant ("pass")); 

excelApp.invoke("Quit", new Variant[] {}); 
} 

public static void main(String arg[]) 
{ 
    System.out.println("hello"); 
    new excel(); 
} 

}