我有java程序来做到这一点。查看代码并尝试一下。这对我有用。在此我们需要将 csv 文件作为输入,并基于 csv 文件生成 excel 文件。为此,我们需要一个 jar 文件 jxl.jar。
package com.sample.java.testing;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Locale;
import jxl.CellView;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class CSVToExcelSample {
private WritableCellFormat timesBoldUnderline;
private WritableCellFormat times;
private String inputFile;
//=========================================================================
public void setOutputFile(String inputFile) {
this.inputFile = inputFile;
}
//=========================================================================
public void write() throws IOException, WriteException {
File file = new File(inputFile);
WorkbookSettings wbSettings = new WorkbookSettings();
wbSettings.setLocale(new Locale("en", "EN"));
WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
workbook.createSheet("Report", 0);
workbook.createSheet("Report1", 1);
WritableSheet excelSheet = workbook.getSheet(0);
WritableSheet excelSheet1 = workbook.getSheet(1);
createLabel(excelSheet);
createContent(excelSheet);
createLabel(excelSheet1);
createContent(excelSheet1);
workbook.write();
workbook.close();
}
//=========================================================================
private void createLabel(WritableSheet sheet) throws WriteException {
// Lets create a times font
WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
// Define the cell format
times = new WritableCellFormat(times10pt);
// Lets automatically wrap the cells
times.setWrap(true);
// Create create a bold font with unterlines
WritableFont times10ptBoldUnderline = new WritableFont(
WritableFont.TIMES, 10, WritableFont.BOLD, false,
UnderlineStyle.SINGLE);
timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
// Lets automatically wrap the cells
timesBoldUnderline.setWrap(true);
CellView cv = new CellView();
cv.setFormat(times);
cv.setFormat(timesBoldUnderline);
cv.setAutosize(true);
// Write a few headers
addCaption(sheet, 0, 0, "Header 1");
addCaption(sheet, 1, 0, "This is another header");
}
//=========================================================================
private void createContent(WritableSheet sheet) throws WriteException,
RowsExceededException, IOException {
// Write a few number
/*
* for (int i = 1; i < 10; i++) { // First column addNumber(sheet, 0, i,
* i + 10); // Second column addNumber(sheet, 1, i, i * i); }
* InputStream inputStream = new FileInputStream(file);
* BufferedReader CSVFile = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
*/
File file = new File("C:/code/csv/depression_scale.csv");
BufferedReader CSVFile = new BufferedReader(new FileReader(file));
int i = 1;
// int j = 0;
// int k = 0;
String dataRow = CSVFile.readLine(); // Read the first line of data.
// The while checks to see if the data is null. If it is, we've hit
// the end of the file. If not, process the data.
while (dataRow != null) {
String[] dataArray = dataRow.split(",");
int j = 0;
for (String item : dataArray) {
System.out.print(item);
addLabel(sheet, j, i, item);
// i++;
j++;
}
i++;
// k++;
System.out.println(); // Print the data line.
dataRow = CSVFile.readLine(); // Read next line of data.
}
// Close the file once all data has been read.
CSVFile.close();
// Lets calculate the sum of it
/*
* StringBuffer buf = new StringBuffer(); buf.append("SUM(A2:A10)");
* Formula f = new Formula(0, 10, buf.toString()); sheet.addCell(f); buf
* = new StringBuffer(); buf.append("SUM(B2:B10)"); f = new Formula(1,
* 10, buf.toString()); sheet.addCell(f);
*
* // Now a bit of text for (int i = 12; i < 20; i++) { // First column
* addLabel(sheet, 0, i, "Boring text " + i); // Second column
* addLabel(sheet, 1, i, "Another text"); }
*/
}
//=========================================================================
private void addCaption(WritableSheet sheet, int column, int row, String s)
throws RowsExceededException, WriteException {
Label label;
label = new Label(column, row, s, timesBoldUnderline);
sheet.addCell(label);
}
//=========================================================================
@SuppressWarnings("unused")
private void addNumber(WritableSheet sheet, int column, int row,
double integer) throws WriteException, RowsExceededException {
Number number;
number = new Number(column, row, integer, times);
sheet.addCell(number);
}
//=========================================================================
private void addLabel(WritableSheet sheet, int column, int row, String s)
throws WriteException, RowsExceededException {
Label label;
label = new Label(column, row, s, times);
sheet.addCell(label);
}
//=========================================================================
public static void main(String[] args) throws WriteException, IOException {
CSVToExcelSample test = new CSVToExcelSample();
test.setOutputFile("filepathhere like C:/code/excel/lars.xls");
test.write();
System.out.println("Please check the result file under C:/code/excel/lars.xls ");
}
//=========================================================================
}