java - 如何访问 Apache POI 上存储在 Sharepoint(带身份验证)上的 .xlsx 文件?

标签 java excel sharepoint apache-poi

  1. 我在共享点上存储了一个 .xlsx 文件,需要登录才能获取/查看该 Excel 文件。
  2. 我需要该文件才能对其执行一些 ApachePOI 操作
  3. 如何下载该文件?

我尝试通过 InputStream 进行此操作,但我不知道如何进行身份验证,并且收到了 403 错误,这是显而易见的,因为我不提供密码/登录名(不知道如何提供)

InputStream inputStream = new URL("https://example.sharepoint.com/something/something1/file.xlsx").openStream();
Files.copy(inputStream, Paths.get("C:/file.xlsx"));

有没有一种简单的方法来访问该文件?

最佳答案

我会尝试将java.net.HttpURLConnectionjava.net.Authenticatorjava.net.PasswordAuthentication一起使用。

示例:

import org.apache.poi.ss.usermodel.*;

import java.io.InputStream;
import java.net.URL;
import java.net.HttpURLConnection;
import java.net.Authenticator;
import java.net.PasswordAuthentication;

class ReadExcelFromURL {

 public static void main(String[] args) throws Exception {

  Authenticator.setDefault (new Authenticator() {
   private String username = "Domain\\UserName";
   private String password = "password";
   protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication (username, password.toCharArray());
   }
  });

  String stringURL = "https://example.sharepoint.com/something/something1/file.xlsx";

  URL url = new URL(stringURL);
  HttpURLConnection con = (HttpURLConnection)url.openConnection();

  InputStream in = con.getInputStream();
  Workbook workbook = WorkbookFactory.create(in);

  for (Sheet sheet : workbook) {
   System.out.println(sheet); // success?
  }

  workbook.close();
 }
}

关于java - 如何访问 Apache POI 上存储在 Sharepoint(带身份验证)上的 .xlsx 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58626879/

相关文章:

c# - 为共享点项目创建类库

java - 按字母顺序排序后,如何获取列表中最重复值的计数?

java - Spring @Transactional(Propagation.NEVER) 应该创建 Hibernate session 吗?

c# - 使用 C# 实现 Excel 自动化

excel - 一种更准确、更高效的模糊搜索算法

wcf - 如何使用 WCF/Rest Web 服务更新 sharepoint 中的多选字段?

sharepoint - 通过 REST API 获取租户的所有域

java - 具有 junit 风格差异的 Hamcrest 匹配器

java - 如何调用以对象作为参数的方法?

javascript - 使用 Node 读取 Xlsx 文件并生成 Json